Поделиться через


!ручка

Расширение !handle отображает сведения об дескрипторе или дескрипторе , который принадлежит одной или всем процессам в целевой системе.

Режим пользователя

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

Режим ядра

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

Параметры

Ручка
Задает индекс отображаемого дескриптора. Если дескриптор равен -1 или если этот параметр опущен, отладчик отображает данные для всех дескрипторов , связанных с текущим процессом. Если дескриптор равен 0, отладчик отображает данные для всех дескрипторов.

UMFlags
(Только в пользовательском режиме) Указывает, что должен содержать дисплей. Этот параметр может быть суммой любого из следующих битовых значений. (Значение по умолчанию — 0x1.)

Bit 0 (0x1)
Отображает сведения о типе дескриптора.

Бит 1 (0x2)
Отображает основные сведения об дескрипторе.

Бит 2 (0x4)
Отображает сведения об имени дескриптора.

Бит 3 (0x8)
Отображает сведения об дескрипторе для конкретного объекта при наличии.

KMFlags
(только режим ядра) Указывает, что должен содержать дисплей. Этот параметр может быть суммой любого из следующих битовых значений. (Значение по умолчанию — 0x3.)

Bit 0 (0x1)
Отображает основные сведения об дескрипторе.

Бит 1 (0x2)
Отображает сведения о объектах.

Бит 2 (0x4)
Отображает записи бесплатного дескриптора. Если этот бит не задан и не задан дескриптор или задано значение нулю, список отображаемых дескрипторов не включает бесплатные дескрипторы. Если Дескриптор задает один бесплатный дескриптор, он отображается даже в том случае, если этот бит не задан.

Бит 4 (0x10)
Отображает дескриптор из таблицы обработчика ядра вместо текущего процесса.

Бит 5 (0x20)
Интерпретирует дескриптор как идентификатор потока или идентификатор процесса и отображает сведения о соответствующем объекте ядра.

Процесс
(только режим ядра) Задает процесс. Вы можете использовать идентификатор процесса или шестнадцатеричный адрес объекта процесса. Этот параметр должен ссылаться на текущий запущенный процесс в целевой системе. Если этот параметр равен -1 или если он не указан, используется текущий процесс. Если этот параметр равен 0, отображается информация обо всех процессах.

TypeName
Указывает тип дескриптора, который требуется проверить. Отображаются только дескрипторы, соответствующие этому типу. TypeName учитывает регистр. Допустимые типы: Event, Section, File, Port, Directory, SymbolicLink, Mutant, WindowStation, Semaphore, Key, Token, Process, Thread, Desktop, IoCompletion, Timer, Job и WaitablePort.

-?
(Только в пользовательском режиме) Отображает текст справки для этого расширения в окне команды отладчика.

DLL-библиотеки

Windows 2000

Kdextx86.dll Uext.dll Ntsdexts.dll

Windows XP и более поздние версии

Kdexts.dll Uext.dll Ntsdexts.dll

Дополнительная информация

Дополнительные сведения об дескрипторах см. в расширении !htrace, документации по пакету SDK Для Microsoft Windows и внутренним службам Microsoft Windows марком Руссиновичем и Дэвидом Соломоном.

Замечания

Расширение !handle можно использовать во время динамической отладки в режиме пользователя и в режиме ядра. Это расширение также можно использовать в файлах дампа в режиме ядра. Однако вы не можете использовать это расширение в файлах дампа в пользовательском режиме, если только вы не создали их с информацией об дескрипторе. (Такие файлы дампа можно создать с помощью >. команда дампа /mh (создать файл дампа).)

Во время динамической отладки в режиме пользователя можно использовать команду closehandle (Close Handle) для закрытия одного или нескольких дескрипторов.

Ниже приведены примеры пользовательского режима расширения !handle . Следующая команда отображает список всех дескрипторов.

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

Следующая команда содержит подробные сведения об обработке 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

В следующих примерах приведены примеры режима ядра !handle. Следующая команда содержит список всех дескрипторов, включая бесплатные дескрипторы.

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

Следующая команда содержит подробные сведения о дескрипторе 0x14 в таблице обработчиков ядра.

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

Следующая команда содержит сведения обо всех дескрипторах объектов Section во всех процессах.

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