Partager via


!ioctldecode

L’extension !ioctldecode affiche le type d’appareil, l’accès obligatoire, le code de fonction et le type de transfert spécifiés par le code IOCTL donné. Pour plus d’informations sur les codes de contrôle IOCTL, consultez Définition de codes de contrôle d’E/S.

!ioctldecode IoctlCode 

Paramètres

IoctlCode

Spécifie le code IOCTL hexadécimal. La commande !irp affiche le code IOCTL dans sa sortie.

DLL

Kdexts.dll

Informations supplémentaires

Pour voir des informations sur l'IOCTL, il faut d’abord trouver un IRP d’intérêt. Vous pouvez utiliser la commande !irpfind pour trouver un IRP d’intérêt.

Utilisez la commande !irp pour afficher des informations sur l’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

Le troisième argument affiché (ici, 0x220003), correspond au code IOCTL. Utilisez le code IOCTL pour afficher des informations sur l'IOCTL (ici, 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

Si vous fournissez un code IOCTL non disponible, vous verrez ce type de sortie.

0: kd> !ioctldecode 0x1280ce

Unknown IOCTL  : 0x1280ce 

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

Bien que le IOCTL ne soit pas identifié, des informations sur les champs IOCTL s'affichent.

Notez que seul un sous-ensemble d'IOCTL définis publiquement peut être identifié par la commande !ioctldecode.

Pour en savoir plus sur les IOCTL, consultez Présentation des codes de contrôle d’E/S.

Pour plus d’informations générales sur les IRP et les IOCTL, consultez Windows Internals (Au cœur de Windows) de Mark E. Russinovich, David A. Solomon et Alex Ionescu.