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


!ioctldecode

Расширение !ioctldecode отображает тип устройства, обязательный доступ, код функции и тип передачи, указанный указанным кодом IOCTL. Дополнительные сведения о кодах управления IOCTL см. в разделе "Определение кодов элементов управления ввода-вывода".

!ioctldecode IoctlCode 

Параметры

IoctlCode

Задает шестнадцатеричный код IOCTL. Команда !irp отображает код IOCTL в выходных данных.

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

Kdexts.dll

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

Чтобы просмотреть информацию об IOCTL, сначала мы найдем IRP интереса. Вы можете использовать команду !irpfind для поиска интересующего вас идентификатора.

Используйте команду !irp для отображения сведений об irp.

0: kd> !irp ffffd581a6c6cd30
Irp is active with 6 stacks 6 is current (= 0xffffd581a6c6cf68)
No Mdl: No System Buffer: Thread 00000000:  Irp stack trace.  
     cmd  flg cl Device   File     Completion-Context
[N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

                                                Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

                                                Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

                                                Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

                                                Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

                                                Args: 00000000 00000000 00000000 00000000
>[IRP_MJ_INTERNAL_DEVICE_CONTROL(f), N/A(0)]
            0 e1 ffffd581a5fbd050 00000000 fffff806d2412cf0-ffffd581a5cce050 Success Error Cancel pending
                       \Driver\usbehci        (IopUnloadSafeCompletion)
                                                Args: ffffd581a6c61a50 00000000 0x220003 00000000

Третий аргумент, отображаемый в данном случае 0x220003, является кодом IOCTL. Используйте код IOCTL для отображения сведений о IOCTL, в этом случае IOCTL_INTERNAL_USB_SUBMIT_URB.

0: kd> !ioctldecode 0x220003

IOCTL_INTERNAL_USB_SUBMIT_URB

Device Type    : 0x22 (FILE_DEVICE_WINLOAD) (FILE_DEVICE_USER_MODE_BUS) (FILE_DEVICE_USB) (FILE_DEVICE_UNKNOWN)
Method         : 0x3 METHOD_NEITHER 
Access         : FILE_ANY_ACCESS
Function       : 0x0

Если вы предоставляете код IOCTL, который недоступен, вы увидите этот тип выходных данных.

0: kd> !ioctldecode 0x1280ce

Unknown IOCTL  : 0x1280ce 

Device Type    : 0x12 (FILE_DEVICE_NETWORK)
Method         : 0x2 METHOD_OUT_DIRECT 
Access         : FILE_WRITE_ACCESS 
Function       : 0x33

Хотя IOCTL не определен, отображаются сведения о полях IOCTL.

Обратите внимание, что только подмножество общедоступных определяемых IOCTLs можно определить с помощью команды !ioctldecode .

Дополнительные сведения о ioCTLs см. в разделе "Введение в коды управления ввода-вывода".

Дополнительные сведения об IRPs и IOCTLs см. в разделе "Внутренние " Windows Марком Э. Руссиновичем, Дэвидом А. Соломоном и Алексом Ионеску.