經過分析,我瞭解到即使_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. Singleton對象和sessionfactory單例對象之間有什麼區別
- 2. 對象和字符串對象之間的區別是什麼
- 3. Deferred對象和它自己的承諾對象之間有什麼區別?
- 4. C++中的派生對象和基礎對象之間有什麼區別?
- 5. ResultSet和對象之間有什麼區別?
- 6. 對象,*和沒有類型之間的區別是什麼?
- 7. 實例和對象之間有什麼區別?
- 8. C#中的對象和類之間有什麼區別?
- 9. Ref對象的getPeeledObjectId()和getObjectId()之間有什麼區別?
- 10. JSON和JavaScript對象之間有什麼區別?
- 11. Perl中的對象和類之間有什麼區別?
- 12. 對象和引用有什麼區別?
- 13. 對象和實例有什麼區別?
- 14. 「WSH」和「WScript」對象有什麼區別?
- 15. 對象和變量有什麼區別?
- 16. 是什麼在JavaScript中的新對象和新的對象()之間的區別
- 17. 空對象類型和對象有什麼區別?
- 18. Javascript對象和JSON對象有什麼區別
- 19. HttpSession對象和HttpContext對象有什麼區別?
- 20. ,對象和指向對象的指針有什麼區別?
- 21. java中的對象和對象有什麼區別
- 22. UML中的引用對象和值對象有什麼區別?
- 23. 全局對象和頭部全局對象有什麼區別?
- 24. 對象和*之間的區別?
- 25. 對象和散列之間的區別?
- 26. 對象和字典之間的區別?
- 27. 對象之間的區別(javascript和jquery)
- 28. 實例和對象之間的功能區別是什麼?
- 29. 是什麼Projections.distinct(Projections.count( 「對象ID」))和Projections.countDistinct( 「OBJECTID」)之間的區別
- 30. DDD:實體和值對象之間的區別是什麼?
非常感謝你 – 2011-04-27 01:57:07
@Eknath艾爾:不客氣。看看你對Jason的回答的評論。即使你不能接受兩個答案,你仍然可以上調他的答案。 – 0xC0000022L 2011-04-27 19:55:04