!handle
A extensão !handle exibe informações sobre um identificador ou identificadores que um ou todos os processos no sistema de destino possuem.
Modo de usuário
!handle [Handle [UMFlags [TypeName]]]
!handle -?
Modo kernel
!handle [Handle [KMFlags [Process [TypeName]]]]
Parâmetros
Manejar
Especifica o índice do identificador a ser exibido. Se Handle for -1 ou se você omitir esse parâmetro, o depurador exibirá dados para todos os identificadores associados ao processo atual. Se Handle for 0, o depurador exibirá dados de todos os identificadores.
UMFlags
(Somente modo de usuário) Especifica o que a exibição deve conter. Esse parâmetro pode ser a soma de qualquer um dos valores de bits a seguir. (O valor padrão é 0x1.)
Bit 0 (0x1)
Exibe informações do tipo de identificador.
Bit 1 (0x2)
Exibe informações básicas do identificador.
Bit 2 (0x4)
Exibe informações do nome do identificador.
Bit 3 (0x8)
Exibe informações do identificador específicas do objeto, quando disponíveis.
KMFlags
(Somente modo kernel) Especifica o que a exibição deve conter. Esse parâmetro pode ser a soma de qualquer um dos valores de bits a seguir. (O valor padrão é 0x3.)
Bit 0 (0x1)
Exibe informações básicas do identificador.
Bit 1 (0x2)
Exibe informações sobre objetos.
Bit 2 (0x4)
Exibe entradas de identificador livre. Se você não definir esse bit e omitir Handle ou defini-lo como zero, a lista de identificadores exibidos não incluirá identificadores livres. Se Handle especificar um único identificador livre, ele será exibido mesmo que você não defina esse bit.
Bit 4 (0x10)
Exibe o identificador da tabela de identificadores do kernel, em vez do processo atual.
Bit 5 (0x20)
Interpreta o identificador como um ID de thread ou ID de processo e exibe informações sobre o objeto de kernel correspondente.
Processo
(Somente modo kernel) Especifica um processo. Você pode usar a ID do processo ou o endereço hexadecimal do objeto de processo. Esse parâmetro deve se referir a um processo em execução no momento no sistema de destino. Se esse parâmetro for -1 ou se você omiti-lo, o processo atual será usado. Se esse parâmetro for 0, as informações do identificador de todos os processos serão exibidas.
Nome do tipo
Especifica o tipo de identificador que você deseja examinar. Somente os identificadores que correspondem a esse tipo serão exibidos. TypeName diferencia maiúsculas de minúsculas. Os tipos válidos incluem Event, Section, File, Port, Directory, SymbolicLink, Mutant, WindowStation, Semaphore, Key, Token, Process, Thread, Desktop, IoCompletion, Timer, Job e WaitablePort.
-?
(Somente modo de usuário) Exibe algum texto de Ajuda para essa extensão na janela Comando do Depurador.
DLL
Windows 2000 |
Kdextx86.dll Uext.dll Ntsdexts.dll |
Windows XP e versões posteriores |
Kdexts.dll Uext.dll Ntsdexts.dll |
Informações Adicionais
Para obter mais informações sobre identificadores, confira a extensão !htrace, a documentação do SDK do Microsoft Windows e Microsoft Windows Internals por Mark Russinovich e David Solomon.
Comentários
Você pode usar a extensão !handle durante a depuração ao vivo no modo de usuário e no modo kernel. Você também pode usar essa extensão em arquivos de despejo no modo kernel. No entanto, não é possível usar essa extensão em arquivos de despejo no modo de usuário, a menos que você os tenha criado especificamente com informações de identificador. (Você pode criar esses arquivos de despejo usando o comando .dump /mh (Create Dump File).)
Durante a depuração no modo de usuário ao vivo, você pode usar o comando .closehandle (Close Handle) para fechar um ou mais identificadores.
Os exemplos a seguir são exemplos de modo de usuário da extensão !handle. O comando a seguir exibe uma lista de todos os identificadores.
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
O comando a seguir exibe informações detalhadas sobre o identificador 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
Os exemplos a seguir são exemplos de modo kernel de !handle. O comando a seguir lista todos os identificadores, incluindo identificadores livres.
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
......
O comando a seguir mostra informações detalhadas sobre o identificador 0x14 na tabela de identificadores do 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
O comando a seguir mostra informações sobre todos os identificadores para objetos Section em todos os processos.
!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
...