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