Partilhar via


!ioctldecode

A extensão !ioctldecode exibe o Tipo de dispositivo, Acesso necessário, Código de função e Tipo de transferência de acordo com o especificado pelo código IOCTL fornecido. Para obter mais informações sobre códigos de controle IOCTL, consulte Como definir códigos de controle de E/S.

!ioctldecode IoctlCode 

Parâmetros

IoctlCode

Especifica o código IOCTL hexadecimal. O comando !irp exibe o código IOCTL em sua saída.

DLL

Kdexts.dll

Informações Adicionais

Para ver as informações sobre o IOCTL, primeiro localizamos um IRP de interesse. Você pode usar o comando !irpfind para localizar um irp de interesse.

Use o comando !irp para exibir as informações sobre o 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

O terceiro argumento exibido, neste caso, 0x220003 é o código IOCTL. Use o código IOCTL para exibir informações sobre a IOCTL, neste caso, 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

Se fornecer um código IOCTL que não esteja disponível, você verá esse tipo de saída.

0: kd> !ioctldecode 0x1280ce

Unknown IOCTL  : 0x1280ce 

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

Embora o IOCTL não seja identificado, são exibidas informações sobre os campos IOCTL.

Observe que somente um subconjunto de IOCTLs definidos publicamente pode ser identificado pelo comando !ioctldecode.

Para mais informações sobre IOCTLs, consulte Introdução aos códigos de controle de E/S.

Para informações mais gerais sobre IRPs e IOCTLs, consulte o livro Windows Internals de Mark E. Russinovich, David A. Solomon e Alex Ionescu.