天天看点

Windbg命令查看IRP IO_STACK_LOACTION结构体成员

     dt命令查看结构体成员。加入 /r 递归列举每个成员(dt nt!_irp /r)。

     这个是双机调试32位系统下查询的结果, 列举每个成员的偏移量,对于调试汇编代码或者逆向分析驱动是很有帮助的,汇编访问结果体成员的时候都是通过偏移值进行的。知道偏移值以及数据结构的类型,就可以知道访问的成员是那一个了。

kd> dt nt!_irp

   +0x000 Type             : Int2B

   +0x002 Size             : Uint2B

   +0x004 MdlAddress       : Ptr32 _MDL

   +0x008 Flags            : Uint4B

   +0x00c AssociatedIrp    : __unnamed

   +0x010 ThreadListEntry  : _LIST_ENTRY

   +0x018 IoStatus         : _IO_STATUS_BLOCK

   +0x020 RequestorMode    : Char

   +0x021 PendingReturned  : UChar

   +0x022 StackCount       : Char

   +0x023 CurrentLocation  : Char

   +0x024 Cancel           : UChar

   +0x025 CancelIrql       : UChar

   +0x026 ApcEnvironment   : Char

   +0x027 AllocationFlags  : UChar

   +0x028 UserIosb         : Ptr32 _IO_STATUS_BLOCK

   +0x02c UserEvent        : Ptr32 _KEVENT

   +0x030 Overlay          : __unnamed

   +0x038 CancelRoutine    : Ptr32     void 

   +0x03c UserBuffer       : Ptr32 Void

   +0x040 Tail             : __unnamed

kd> dt nt!_io_stack_location

   +0x000 MajorFunction    : UChar

   +0x001 MinorFunction    : UChar

   +0x002 Flags            : UChar

   +0x003 Control          : UChar

   +0x004 Parameters       : __unnamed

   +0x014 DeviceObject     : Ptr32 _DEVICE_OBJECT

   +0x018 FileObject       : Ptr32 _FILE_OBJECT

   +0x01c CompletionRoutine : Ptr32     long 

   +0x020 Context          : Ptr32 Void