!handle

Die Erweiterung !handle zeigt Informationen über ein oder mehrere Handles an, die ein oder alle Prozesse im Zielsystem besitzen.

Benutzermodus

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

Kernelmodus

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

Parameter

Handle
Gibt den Index des anzuzeigenden Handles an. Wenn Handle gleich -1 ist oder wenn Sie diesen Parameter weglassen, zeigt der Debugger Daten für alle Handles an, die mit dem aktuellen Prozess verbunden sind. Wenn Handle gleich 0 ist, zeigt der Debugger Daten für alle Handles an.

UMFlags
(Nur Benutzermodus) Gibt an, was auf dem Display angezeigt werden soll. Dieser Parameter kann eine Summe der folgenden Bitwerte sein. (Der Standardwert ist 0x1.)

Bit 0 (0x1)
Zeigt Informationen zum Handletyp an.

Bit 1 (0x2)
Zeigt grundlegende Handleinformationen an.

Bit 2 (0x4)
Zeigt Informationen zum Handle-Namen an.

Bit 3 (0x8)
Zeigt objektspezifische Handleinformationen an, sofern verfügbar.

KMFlags
(Nur Kernelmodus) Gibt an, was die Anzeige enthalten soll. Dieser Parameter kann eine Summe der folgenden Bitwerte sein. (Der Standardwert ist 0x3.)

Bit 0 (0x1)
Zeigt grundlegende Handleinformationen an.

Bit 1 (0x2)
Zeigt Informationen über Objekte an.

Bit 2 (0x4)
Zeigt freie Handle-Einträge an. Wenn Sie dieses Bit nicht setzen und Handle weglassen oder es auf Null setzen, enthält die Liste der angezeigten Handles keine freien Handles. Wenn Handle ein einzelnes freies Handle angibt, wird es angezeigt, auch wenn Sie dieses Bit nicht setzen.

Bit 4 (0x10)
Zeigt das Handle aus der Kernel-Handle-Tabelle anstelle des aktuellen Prozesses an.

Bit 5 (0x20)
Interpretiert das Handle als Thread-ID oder Prozess-ID und zeigt Informationen über das entsprechende Kernelobjekt an.

Process
(Nur Kernelmodus) Gibt einen Prozess an. Sie können die Prozess-ID oder die hexadezimale Adresse des Prozessobjekts verwenden. Dieser Parameter muss sich auf einen aktuell laufenden Prozess auf dem Zielsystem beziehen. Wenn dieser Parameter -1 ist oder wenn Sie ihn weglassen, wird der aktuelle Prozess verwendet. Wenn dieser Parameter 0 ist, werden die Handle-Informationen aller Prozesse angezeigt.

TypeName
Gibt die Art des Handles an, den Sie untersuchen möchten. Es werden nur Handlee angezeigt, die diesem Typ entsprechen. Bei TypeName wird zwischen Groß- und Kleinschreibung unterschieden. Gültige Typen sind Event, Section, File, Port, Directory, SymbolicLink, Mutant, WindowStation, Semaphore, Key, Token, Process, Thread, Desktop, IoCompletion, Timer, Job und WaitablePort.

-?
(Nur im Benutzermodus) Zeigt einen Hilfetext für diese Erweiterung im Befehlsfenster des Debugger an.

DLL

Windows 2000

Kdextx86.dll Uext.dll Ntsdexts.dll

Windows XP und höher

Kdexts.dll Uext.dll Ntsdexts.dll

Zusätzliche Informationen

Weitere Informationen über Handles finden Sie in der Erweiterung !htrace, in der Microsoft Windows SDK-Dokumentation und Microsoft Windows Internals von Mark Russinovich und David Solomon.

Hinweise

Sie können die Erweiterung !handle während des Live-Debugging im Benutzermodus und im Kernelmodus verwenden. Sie können diese Erweiterung auch für Kernelmodus-Dump-Dateien verwenden. Sie können diese Erweiterung jedoch nicht für Dump-Dateien im Benutzermodus verwenden, es sei denn, Sie haben sie speziell mit Handle-Informationen erstellt. (Sie können solche Dumpdateien mit dem Befehl .dump /mh (Create Dump File) erstellen.)

Während des Live-Debuggens im Benutzermodus können Sie den Befehl .closehandle (Close Handle) verwenden, um ein oder mehrere Handles zu schließen.

Die folgenden Beispiele sind Beispiele für den Benutzermodus der Erweiterung !handle. Der folgende Befehl zeigt eine Liste aller Handles an.

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

Der folgende Befehl zeigt detaillierte Informationen zu Handle 0x8 an.

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

Die folgenden Beispiele sind Kernelmodus-Beispiele für !handle. Der folgende Befehl listet alle Handles auf, einschließlich der freien Handles.

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

Der folgende Befehl zeigt detaillierte Informationen über Handle 0x14 in der Kernel-Handle-Tabelle an.

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

Der folgende Befehl zeigt Informationen über alle Handles zu Abschnittsobjekten in allen Prozessen an.

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