!maneggiare
L'estensione !handle visualizza informazioni su un handle o handle di uno o tutti i processi nel sistema di destinazione.
Modalità utente
!handle [Handle [UMFlags [TypeName]]]
!handle -?
Modalità kernel
!handle [Handle [KMFlags [Process [TypeName]]]]
Parametri
Maneggiare
Specifica l'indice dell'handle da visualizzare. Se Handle è -1 o se si omette questo parametro, il debugger visualizza i dati per tutti gli handle associati al processo corrente. Se Handle è 0, il debugger visualizza i dati per tutti gli handle.
UMFlags
(solo modalità utente) Specifica il contenuto della visualizzazione. Questo parametro può essere una somma di uno dei valori di bit seguenti. Il valore predefinito è 0x1.
Bit 0 (0x1)
Visualizza le informazioni sul tipo di handle.
Bit 1 (0x2)
Visualizza le informazioni di base sull'handle.
Bit 2 (0x4)
Visualizza le informazioni sul nome dell'handle.
Bit 3 (0x8)
Visualizza le informazioni sull'handle specifiche dell'oggetto, se disponibili.
KMFlags
(solo modalità kernel) Specifica il contenuto della visualizzazione. Questo parametro può essere una somma di uno dei valori di bit seguenti. Il valore predefinito è 0x3.
Bit 0 (0x1)
Visualizza le informazioni di base sull'handle.
Bit 1 (0x2)
Visualizza informazioni sugli oggetti.
Bit 2 (0x4)
Visualizza le voci di handle gratuite. Se non si imposta questo bit e si omette Handle o lo si imposta su zero, l'elenco di handle visualizzati non include handle gratuiti. Se Handle specifica un singolo handle libero, viene visualizzato anche se non si imposta questo bit.
Bit 4 (0x10)
Visualizza l'handle dalla tabella dell'handle del kernel invece del processo corrente.
Bit 5 (0x20)
Interpreta l'handle come ID thread o ID processo e visualizza informazioni sull'oggetto kernel corrispondente.
Processo
(solo modalità kernel) Specifica un processo. È possibile usare l'ID processo o l'indirizzo esadecimale dell'oggetto processo. Questo parametro deve fare riferimento a un processo attualmente in esecuzione nel sistema di destinazione. Se questo parametro è -1 o se lo si omette, viene usato il processo corrente. Se questo parametro è 0, viene visualizzata la gestione delle informazioni di tutti i processi.
TypeName
Specifica il tipo di handle da esaminare. Vengono visualizzati solo handle che corrispondono a questo tipo. TypeName fa distinzione tra maiuscole e minuscole. I tipi validi includono Event, Section, File, Port, Directory, SymbolicLink, Mutant, WindowStation, Semaphore, Key, Token, Process, Thread, Desktop, IoCompletion, Timer, Job e WaitablePort.
-?
(solo modalità utente) Visualizza il testo della Guida per questa estensione nella finestra Del comando del debugger.
DLL
Windows 2000 |
Kdextx86.dll Uext.dll Ntsdexts.dll |
Windows XP e versioni successive |
Kdexts.dll Uext.dll Ntsdexts.dll |
Informazioni aggiuntive
Per altre informazioni sugli handle, vedere l'estensione !htrace , la documentazione di Microsoft Windows SDK e microsoft Windows Internals di Mark Russinovich e David Solomon.
Osservazioni:
È possibile usare l'estensione !handle durante il debug live in modalità utente e in modalità kernel. È anche possibile usare questa estensione nei file di dump in modalità kernel. Tuttavia, non è possibile usare questa estensione nei file di dump in modalità utente, a meno che non siano stati creati specificamente con le informazioni di gestione. È possibile creare tali file di dump usando . comando dump /mh (Crea file di dump).
Durante il debug in modalità utente attivo, è possibile usare il comando closehandle (Chiudi handle) per chiudere uno o più handle.
Gli esempi seguenti sono esempi in modalità utente dell'estensione !handle . Il comando seguente visualizza un elenco di tutti gli 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
Il comando seguente visualizza informazioni dettagliate sull'handle 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
Gli esempi seguenti sono esempi in modalità kernel di !handle. Il comando seguente elenca tutti gli handle, inclusi gli handle liberi.
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
......
Il comando seguente mostra informazioni dettagliate sull'handle 0x14 nella tabella dell'handle del kernel.
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
Il comando seguente mostra informazioni su tutti gli handle per gli oggetti Section in tutti i processi.
!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
...