!handle

L’extension !handle affiche des informations sur un handle ou des handles détenu(s) par un ou tous les processus du système cible.

Mode Utilisateur

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

Mode Noyau

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

Paramètres

Manche
Spécifie l’index du handle à afficher. Si Handle est égal à -1 ou si vous omettez ce paramètre, le débogueur affiche les données de tous les handles associés au processus actuel. Si Handle est égal à 0, le débogueur affiche les données de tous les handles.

UMFlags
(Mode utilisateur uniquement) Spécifie ce que l’affichage doit contenir. Ce paramètre peut être la somme de l’une des valeurs de bits suivantes. (La valeur par défaut est 0x1).

Bit 0 (0x1)
Affiche les informations de type de handle.

Bit 1 (0x2)
Affiche les informations de handle de base.

Bit 2 (0x4)
Affiche les informations relatives au nom du handle.

Bit 3 (0x8)
Affiche les informations de handle spécifiques à l’objet, lorsqu’elles sont disponibles.

KMFlags
(Mode noyau uniquement) Spécifie ce que l’affichage doit contenir. Ce paramètre peut être la somme de l’une des valeurs de bits suivantes. (La valeur par défaut est 0x3).

Bit 0 (0x1)
Affiche les informations de handle de base.

Bit 1 (0x2)
Affiche des informations sur les objets.

Bit 2 (0x4)
Affiche les entrées de handle libre. Si vous ne définissez pas ce bit et que vous omettez Handle ou que vous le paramétrez sur zéro, la liste des handles affichés n’inclut pas de handles gratuits. Si Handle spécifie un handle libre unique, il s’affiche même si vous ne définissez pas ce bit.

Bit 4 (0x10)
Affiche le handle de la table de handles du noyau au lieu du processus actuel.

Bit 5 (0x20)
Interprète le handle en tant qu’ID de thread ou ID de processus et affiche des informations sur l’objet noyau correspondant.

Processus
(Mode noyau uniquement) Spécifie un processus. Vous pouvez utiliser l’ID de processus ou l’adresse hexadécimale de l’objet de processus. Ce paramètre doit faire référence à un processus en cours d’exécution sur le système cible. Si ce paramètre est égal à -1 ou si vous l’omettez, le processus actuel est utilisé. Si ce paramètre est 0, la gestion des informations de tous les processus s’affiche.

TypeName
Spécifie le type de handle que vous souhaitez examiner. Seuls les handles qui correspondent à ce type sont affichés. TypeName respecte la casse. Les types valides incluent Event, Section, File, Port, Directory, SymbolicLink, Mutant, WindowStation, Semaphore, Key, Token, Process, Thread, Desktop, IoCompletion, Timer, Job et WaitablePort.

- ?
(Mode utilisateur seulement) Affiche un texte d’aide pour cette extension dans la fenêtre de commande de débogueur.

DLL

Windows 2000

Kdextx86.dll Uext.dll Ntsdexts.dll

Windows XP et versions ultérieures

Kdexts.dll Uext.dll Ntsdexts.dll

Informations supplémentaires

Pour plus d’informations sur les handles, veuillez consulter l’extension !htrace , la documentation du Kit de développement logiciel (SDK) Microsoft Windows et Microsoft Windows Internals (Au cœur de Windows) de Mark Russinovich et David Salomon.

Notes

Vous pouvez utiliser l’extension !handle pendant le débogage en direct en mode utilisateur et en mode noyau. Vous pouvez également utiliser cette extension sur les fichiers de vidage en mode noyau. Toutefois, vous ne pouvez pas utiliser cette extension sur les fichiers de vidage en mode utilisateur, sauf si vous les avez spécifiquement créées avec des informations de gestion. (Vous pouvez créer ces fichiers de vidage à l’aide de la commande .dump /mh (Create Dump File)).

Pendant le débogage en mode utilisateur en direct, vous pouvez utiliser la commande .closehandle (Close Handle) pour fermer un ou plusieurs handles.

Les exemples suivants sont des exemples en mode utilisateur de l’extension !handle . La commande suivante affiche une liste de tous les handles.

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

La commande suivante affiche des informations détaillées sur le 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

Les exemples suivants sont des exemples en mode noyau de !handle. La commande suivante répertorie tous les handles, y compris les handles gratuits.

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

La commande suivante affiche des informations détaillées sur le handle 0x14 dans la table de handle du noyau.

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

La commande suivante affiche des informations sur tous les handles vers les objets Section dans tous les processus.

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