!handle
簡介
!handle擴展顯示有關目標系統中一個或所有進程擁有的一個或多個句柄的信息。
使用形式
- 用戶模式
!handle [Handle [UMFlags [TypeName]]]
!handle -? - 內核模式
!handle [Handle [KMFlags [Process [TypeName]]]]
參數
- Handle
指定要顯示的句柄的索引。如果Handle為-1或省略此參數,調試器將顯示與當前進程關聯的所有句柄的數據。如果句柄為0,調試器將顯示所有句柄的數據。 - UMFlags
(僅限用戶模式)指定顯示內容。此參數可以是以下任何位值的總和。(默認值為0x1。)|
位 0 (0x1)
顯示句柄類型信息。位 1 (0x2)
顯示基本句柄信息。位 2 (0x4)
顯示句柄名稱信息。位 3 (0x8)
顯示特定於對象的句柄信息 (如果可用)。 - KMFlags
(僅限內核模式)指定顯示內容。此參數可以是以下任何位值的總和。(默認值為0x3。)
位 0 (0x1)
顯示基本句柄信息。位 1 (0x2)
顯示有關對象的信息。位 2 (0x4)
顯示可用的句柄項。 如果未設置此位並且省略了句柄或將其設置為零, 則顯示的句柄列表不包含可用的句柄。 如果handle指定單個自由句柄, 則即使未設置此位, 也會顯示該句柄。位 4 (0x10)
顯示來自內核句柄表而不是當前進程的句柄。位 5 (0x20)
將句柄解釋為線程 ID 或進程 ID, 並顯示有關相應內核對象的信息。 - Process
(僅限內核模式)指定進程。您可以使用進程ID或進程對象的十六進制地址。此參數必須引用目標系統上當前正在運行的進程。如果此參數為-1或忽略此參數,則使用當前進程。如果此參數為0,則顯示所有進程的句柄信息。 - TypeName
指定要檢查的句柄的類型。 只顯示匹配此類型的句柄。 TypeName區分大小寫。 有效類型包括事件、節、文件、端口、目錄、SymbolicLink、變化、Windowstation 時出錯、信號量、密鑰、令牌、進程、線程、桌面、IoCompletion、計時器、作業和 WaitablePort。 - -?
(僅用戶模式)在調試器命令窗口中顯示此擴展的一些幫助文本。
支持環境
Windows 2000 |
Kdextx86 Ntsdexts Uext. .dll |
Windows XP 和更高版本 |
Kdexts Ntsdexts Uext. .dll |
備注
你可以在用戶模式和內核模式實時調試過程中使用!handle擴展。 你還可以在內核模式轉儲文件中使用此擴展。 但是, 你不能對用戶模式轉儲文件使用此擴展, 除非你專門使用處理信息創建它們。 (可以使用dump/mh (創建轉儲文件) 命令創建此類轉儲文件。)在實時用戶模式調試過程中, 可以使用closehandle (關閉句柄) 命令關閉一個或多個句柄。
0:000> !handle Handle 4 Type Section Handle 8 Type Event Handle c Type Event Handle 10 Type Event Handle 14 Type Directory Handle 5c Type File 6 Handles Type Count Event 3 Section 1 File 1 Directory 1
以下命令顯示有關句柄0x8 的詳細信息
0:000> !handle 8 f Handle 8 Type Event Attributes 0 GrantedAccess 0x100003: Synch QueryState,ModifyState HandleCount 2 PointerCount 3 Name <none> Object Specific Information Event Type Auto Reset Event is Waiting
以下示例是 ! handle的內核模式示例。 以下命令將列出所有句柄, 包括自由句柄。
kd> !handle 0 4 processor number 0 PROCESS 80559800 SessionId: 0 Cid: 0000 Peb: 00000000 ParentCid: 0000 DirBase: 00039000 ObjectTable: e1000d60 TableSize: 380. Image: Idle New version of handle table at e1002000 with 380 Entries in use 0000: free handle, Entry address e1002000, Next Entry fffffffe 0004: Object: 80ed5238 GrantedAccess: 001f0fff 0008: Object: 80ed46b8 GrantedAccess: 00000000 000c: Object: e1281d00 GrantedAccess: 000f003f 0010: Object: e1013658 GrantedAccess: 00000000 ...... 0168: Object: ffb6c748 GrantedAccess: 00000003 (Protected) 016c: Object: ff811f90 GrantedAccess: 0012008b 0170: free handle, Entry address e10022e0, Next Entry 00000458 0174: Object: 80dfd5c8 GrantedAccess: 001f01ff ......
以下命令顯示有關內核句柄表中的句柄0x14 的詳細信息。
kd> !handle 14 13 processor number 0 PROCESS 80559800 SessionId: 0 Cid: 0000 Peb: 00000000 ParentCid: 0000 DirBase: 00039000 ObjectTable: e1000d60 TableSize: 380. Image: Idle Kernel New version of handle table at e1002000 with 380 Entries in use 0014: Object: e12751d0 GrantedAccess: 0002001f Object: e12751d0 Type: (80ec8db8) Key ObjectHeader: e12751b8 HandleCount: 1 PointerCount: 1 Directory Object: 00000000 Name: \REGISTRY\MACHINE\SYSTEM\CONTROLSET001\CONTROL\SESSION MANAGER\EXECUTIVE
以下命令顯示有關所有進程中的 Section 對象的所有句柄的信息。
!handle 0 3 0 Section ... PROCESS fffffa8004f48940 SessionId: none Cid: 0138 Peb: 7f6639bf000 ParentCid: 0004 DirBase: 10cb74000 ObjectTable: fffff8a00066f700 HandleCount: 39. Image: smss.exe Handle table at fffff8a00066f700 with 39 entries in use 0040: Object: fffff8a000633f00 GrantedAccess: 00000006 (Inherit) Entry: fffff8a000670100 Object: fffff8a000633f00 Type: (fffffa80035fef20) Section ObjectHeader: fffff8a000633ed0 (new version) HandleCount: 1 PointerCount: 262144