經過分析,我瞭解到即使_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