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