经过分析,我了解到即使_KPROCESS对象可以是ActiveProcessLinks列表的成员。 _EPROCESS和_KPROCESS对象有什么区别?什么时候创建,哪个不是?它们之间有什么概念上的区别?_EPROCESS对象和_KPROCESS对象之间有什么区别
回答
看一看这里:
http://channel9.msdn.com/Shows/Going+Deep/Arun-Kishan-Process-Management-in-Windows-Vista
EPROCESS
是内核模式相当于PEB
从用户模式。有关更多详细信息,请参阅Alex Ionescu网站上的this document以及the book by Schreiber和其他关于NT内部的书籍。
在WinDbg中使用dt
来了解它们的外观。
EPROCESS在用户模式下不可用。 KPROCESS也不是。
KPROCESS是EPROCESS的一个子集。如果您查看调试器中的字段,您会看到KPROCESS包含的字段与进程的调度和簿记更密切相关,而EPROCESS在其中包含更高级别的进程上下文。名称,据我所知,来自与这些结构(执行具有结构和功能往往与防爆前缀,而内核结构和功能经常与柯前缀)
你可以看到这个交互不同的子系统在不同的文件功能。考虑KeStackAttachProcess的原型(http://msdn.microsoft.com/en-us/library/ff549659(v=vs.85).aspx),它是一个Ke函数并且需要一个KPROCESS。没有任何接受EPROCESS(或KPROCESS)的导出和记录的Ex函数,但是Ps函数完全在EPROCESSES中处理。
线程与KTHREAD和ETHREAD存在类似的鸿沟。
这是简化的,但Windows O/S的内核模式部分分为三部分:HAL,内核和执行子系统。执行子系统处理一般的操作系统策略和操作。内核处理低级操作(例如自旋锁,线程切换)以及调度的进程体系结构特定细节。 HAL处理在处理器体系结构的特定实现中出现的差异(例如,中断在这个x86实现上的路由方式)。这在Windows内部的书中有更详细的解释。
当您创建新的Win32进程时,内核和执行子系统都要跟踪它。例如,内核想知道进程中线程的优先级和亲和性,因为这将影响调度。执行子系统希望跟踪该过程,因为例如安全执行子系统想要将令牌与过程相关联,以便稍后进行安全检查。
内核用来跟踪进程的结构是KPROCESS。执行子系统用来跟踪它的结构是EPROCESS。作为一个实现细节,KPROCESS是EPROCESS的第一个字段,所以执行子系统分配EPROCESS结构,然后调用Kernel来初始化它的KPROCESS部分。最后,这两个结构都是表示用户进程实例的Process Object的一部分。这也应该都包含在Windows内部的书中。
-scott
- 1. 对象和字符串对象之间的区别是什么
- 2. C++中的派生对象和基础对象之间有什么区别?
- 3. C#中的对象和类之间有什么区别?
- 4. Perl中的对象和类之间有什么区别?
- 5. Ref对象的getPeeledObjectId()和getObjectId()之间有什么区别?
- 6. ResultSet和对象之间有什么区别?
- 7. 实例和对象之间有什么区别?
- 8. JSON和JavaScript对象之间有什么区别?
- 9. 对象,*和没有类型之间的区别是什么?
- 10. 对象和引用有什么区别?
- 11. 对象和实例有什么区别?
- 12. 对象和变量有什么区别?
- 13. 是什么在JavaScript中的新对象和新的对象()之间的区别
- 14. 对象和字典之间的区别?
- 15. 对象和散列之间的区别?
- 16. HttpSession对象和HttpContext对象有什么区别?
- 17. ,对象和指向对象的指针有什么区别?
- 18. DDD:实体和值对象之间的区别是什么?
- 19. 是什么Projections.distinct(Projections.count( “对象ID”))和Projections.countDistinct( “OBJECTID”)之间的区别
- 20. OpenGL中的帧缓冲区对象和像素缓冲区对象之间有什么区别?
- 21. null ==对象和对象== null之间的区别
- 22. jvisualvm活动对象和分配对象之间的区别
- 23. 对象和变量对象之间的区别
- 24. mysqltransaction对象(mysql)和transactionscope对象(asp.net)之间的区别
- 25. 子对象和包含对象之间的区别
- 26. 面向对象和非面向对象之间的区别javascript
- 27. iPhone [(id)对象类]和object_getClassName(id对象)之间的区别
- 28. 可变对象和不可变对象之间的区别
- 29. Kotlin:对象和同伴对象之间的区别
- 30. 对象引用声明和对象构造之间的区别?
非常感谢你 – 2011-04-27 01:57:07
@Eknath艾尔:不客气。看看你对Jason的回答的评论。即使你不能接受两个答案,你仍然可以上调他的答案。 – 0xC0000022L 2011-04-27 19:55:04