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