Share via


!handle

La extensión !handle muestra información sobre un identificador o identificadores que poseen uno o todos los procesos del sistema destino.

Modo de usuario

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

Modo kernel

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

Parámetros

Handle
Especifica el índice del identificador que se va a mostrar. Si Handle es -1 o si omite este parámetro, el depurador muestra los datos de todos los identificadores asociados al proceso actual. Si Handle es 0, el depurador muestra los datos de todos los identificadores.

UMFlags
(Solo en modo de usuario) Especifica lo que debe contener la visualización. Este parámetro puede ser una suma de cualquiera de los siguientes valores de bits. (El valor predeterminado es 0x1).

Bit 0 (0x1)
Muestra información sobre el tipo de identificador.

Bit 1 (0x2)
Muestra información básica sobre el identificador.

Bit 2 (0x4)
Muestra información sobre el nombre del identificador.

Bit 3 (0x8)
Muestra la información del identificador específica del objeto cuando está disponible.

KMFlags
(Solo en modo kernel) Especifica lo que debe contener la visualización. Este parámetro puede ser una suma de cualquiera de los siguientes valores de bits. (El valor predeterminado es 0x3).

Bit 0 (0x1)
Muestra información básica sobre el identificador.

Bit 1 (0x2)
Muestra información sobre los objetos.

Bit 2 (0x4)
Muestra las entradas de identificadores libres. Si no establece este bit y omite Handle o lo establece en cero, la lista de identificadores que se muestra no incluye los identificadores libres. Si Handle especifica un único identificador libre, se mostrará aunque no establezca este bit.

Bit 4 (0x10)
Muestra el identificador de la tabla de identificadores del kernel en lugar del proceso actual.

Bit 5 (0x20)
Interpreta el identificador como un ID de subproceso o de proceso y muestra información sobre el objeto del kernel correspondiente.

Process
(Solo en modo kernel) Especifica un proceso. Puede utilizar el ID del proceso o la dirección hexadecimal del objeto del proceso. Este parámetro debe referirse a un proceso actualmente en ejecución en el sistema de destino. Si este parámetro es -1 o si lo omite, se utilizará el proceso actual. Si este parámetro es 0, se muestra la información de los identificadores de todos los procesos.

TypeName
Especifica el tipo de identificador que desea examinar. Solo se muestran los identificadores que coinciden con este tipo. TypeName distingue entre mayúsculas y minúsculas. Los tipos válidos incluyen Event, Section, File, Port, Directory, SymbolicLink, Mutant, WindowStation, Semaphore, Key, Token, Process, Thread, Desktop, IoCompletion, Timer, Job, and WaitablePort.

-?
(Solo modo de usuario) Muestra algún texto de ayuda para esta extensión en la ventana de comando del depurador.

Archivo DLL

Windows 2000

Kdextx86.dll Uext.dll Ntsdexts.dll

Windows XP y versiones posteriores

Kdexts.dll Uext.dll Ntsdexts.dll

Información adicional

Para obtener más información sobre los identificadores, consulte la extensión !htrace, la documentación de Microsoft Windows SDK y Microsoft Windows Internals de Mark Russinovich y David Solomon.

Comentarios

Puede utilizar la extensión !handle durante la depuración en directo en modo de usuario y en modo kernel. También puede utilizar esta extensión en archivos de volcado en modo kernel. Sin embargo, no puede utilizar esta extensión en archivos de volcado en modo de usuario, a menos que los haya creado específicamente con información de control. (Puede crear estos archivos de volcado utilizando el comando .dump /mh [crear archivo de volcado]).

Durante la depuración en directo en modo de usuario, puede utilizar el comando .closehandle (cerrar identificador) para cerrar uno o varios identificadores.

Los siguientes son ejemplos en modo de usuario de la extensión !handle. El siguiente comando muestra una lista de todos los 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

El siguiente comando muestra información detallada sobre el 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

Los siguientes son ejemplos en modo kernel de la extensión !handle. El siguiente comando enumera todos los identificadores, incluidos los identificadores libres.

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

El siguiente comando muestra información detallada sobre el identificador 0x14 en la tabla de identificadores 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

El siguiente comando muestra información sobre todos los identificadores de los objetos de Sección en todos los procesos.

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