!handle

!handle 拡張機能は 、ターゲット システム内の 1 つ以上のプロセスが所有するハンドルまたはハンドルに関する情報を表示します。

User-Mode

!handle [Handle [UMFlags [TypeName]]] 
!handle -?

Kernel-Mode

    !handle [Handle [KMFlags [Process [TypeName]]]] 

パラメーター


表示するハンドルのインデックスを指定します。 Handle が-1 の場合、またはこのパラメーターを省略した場合、デバッガーは現在のプロセスに関連付けられているすべてのハンドルのデータを表示します。 Handle 0 の場合、デバッガーは、すべてのハンドルのデータを表示します。


(ユーザー モードのみ)表示に含まれるものを指定します。 このパラメーターには、次のビット値の合計を指定できます。 (既定値は 0x1)。

ビット 0 (0x1)
ハンドルの型情報を表示します。

ビット 1 (0x2)
基本的なハンドル情報を表示します。

ビット 2 (0x4)
ハンドル名の情報を表示します。

ビット 3 (0x8)
使用可能な場合は、オブジェクト固有のハンドル情報を表示します。


(カーネル モードのみ)表示に含まれるものを指定します。 このパラメーターには、次のビット値の合計を指定できます。 (既定値は 0x3)。

ビット 0 (0x1)
基本的なハンドル情報を表示します。

ビット 1 (0x2)
オブジェクトに関する情報を表示します。

ビット 2 (0x4)
フリー ハンドル エントリを表示します。 このビットを設定しない場合 、ハンドル を省略するか、ゼロに設定した場合、表示されるハンドルの一覧には空きハンドルは含めされません。 Handle 1 つのフリー ハンドルが指定されている場合は、このビットを設定しない場合でも表示されます。

ビット 4 (0x10)
現在のプロセスではなく、カーネル ハンドル テーブルのハンドルを表示します。

ビット 5 (0x20)
ハンドルをスレッド ID またはプロセス ID として解釈し、対応するカーネル オブジェクトに関する情報を表示します。


(カーネル モードのみ)プロセスを指定します。 プロセス ID またはプロセス オブジェクトの 16 進数アドレスを使用できます。 このパラメーターは、ターゲット システムで現在実行中のプロセスを参照する必要があります。 このパラメーターが -1 の場合、または省略した場合は、現在のプロセスが使用されます。 このパラメーターが 0 の場合は、すべてのプロセスのハンドル情報が表示されます。


調べるハンドルの種類を指定します。 この型に一致するハンドルだけが表示されます。 TypeName の大文字と小文字は区別されます。 有効な型には、Event、Section、File、Port、Directory、SymbolicLink、Symbolic、WindowStation、Semaphore、Key、Token、Process、Thread、Desktop、IoCompletion、Timer、Job、WaitablePort が含まれます。


(ユーザー モードのみ)この拡張機能のヘルプ テキストをデバッガー ウィンドウに表示コマンド ウィンドウ。

DLL

Windows 2000

Kdextx86.dll Uext.dll Ntsdexts.dll

Windows XP 以降

Kdexts.dll Uext.dll Ntsdexts.dll

追加情報

ハンドルの詳細については、!htrace拡張機能、Microsoft Windows SDK ドキュメント、およびMicrosoft Windows Internals by Mark Russinovich および David Solomon を参照してください。

コメント

!handle 拡張機能は 、ユーザー モード およびカーネル モードのライブ デバッグ中に使用できます。 この拡張機能は、カーネル モードダンプ ファイルでも使用できます。 ただし、ハンドル情報を使用して作成した場合を特に指定しない限り、ユーザー モード ダンプ ファイルでこの拡張機能を使用することはできません。 (このようなダンプ ファイルは、.dump /mh (ダンプ ファイルの作成) コマンドを使用して作成できます)。

ライブ ユーザー モード のデバッグ中に 、.closehandle (Close Handle) コマンドを使用して、1 つ以上のハンドルを閉じできます。

次の例は、!handle 拡張機能のユーザー モード の例 です。 次のコマンドは、すべてのハンドルの一覧を表示します。

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
...