!ioctldecode
!ioctldecode 扩展显示给定 IOCTL 代码指定的设备类型、所需访问权限、函数代码和传输类型。 有关 IOCTL 控制代码的详细信息,请参阅 定义 I/O 控制代码。
!ioctldecode IoctlCode
参数
IoctlCode
指定十六进制 IOCTL 代码。 !irp 命令在其输出中显示 IOCTL 代码。
DLL
Kdexts.dll
其他信息
若要查看有关 IOCTL 的信息,首先需要找到相关的 IRP。 可以使用 !irpfind 命令查找相关的 IRP。
使用 !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
显示的第三个参数是 IOCTL 代码,本例中为 0x220003。 使用 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 字段的信息。
请注意,只有一部分公开定义的 IOCTL 才能由 !ioctldecode 命令标识。
有关 IOCTL 的详细信息,请参阅 I/O 控制代码简介。
有关 IRP 和 IOCTL 的更多一般信息,请参阅 Mark E. Russinovich、David A. Solomon 和 Alex Ionescu 编写的 Windows 内部资料。