DeviceExtenson和DeviceObjectExtension关系猜测

用WinDbg顺便看了下_DEVICE_OBJECT结构,看到了之前疑惑的2个结构:

kd> dt _device_object 0x821899c8
nt!_DEVICE_OBJECT
   +0x000 Type             : 0n3
   +0x002 Size             : 0xd0
   +0x004 ReferenceCount   : 0n0
   +0x008 DriverObject     : 0x82339f38 _DRIVER_OBJECT
   +0x00c NextDevice       : (null)
   +0x010 AttachedDevice   : (null)
   +0x014 CurrentIrp       : (null)
   +0x018 Timer            : (null)
   +0x01c Flags            : 0x2044
   +0x020 Characteristics  : 0
   +0x024 Vpb              : (null)
   +0x028 DeviceExtension  : 0x82189a80 Void
   +0x02c DeviceType       : 0x22
   +0x030 StackSize        : 2 ''
   +0x034 Queue            : __unnamed
   +0x05c AlignmentRequirement : 0
   +0x060 DeviceQueue      : _KDEVICE_QUEUE
   +0x074 Dpc              : _KDPC
   +0x094 ActiveThreadCount : 0
   +0x098 SecurityDescriptor : 0xe1333cf0 Void
   +0x09c DeviceLock       : _KEVENT
   +0x0ac SectorSize       : 0
   +0x0ae Spare1           : 0
   +0x0b0 DeviceObjectExtension : 0x82189a98 _DEVOBJ_EXTENSION
   +0x0b4 Reserved         : (null)

自己注册的DEVICE_EXTENSION结构如下,IoCreateDevice函数的第2个参数DeviceExtensionSize就是这个结构的大小,我的定义如下:
typedef struct _DEVICE_EXTENSION
{
    PDEVICE_OBJECT fdo;
    PDEVICE_OBJECT NextStackDevice;
    UNICODE_STRING ustrDeviceName;    // 设备名
    UNICODE_STRING ustrSymLinkName;    // 符号链接名
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
占用了0x18 bytes

结合上面WinDbg打印数据看,应该是DeviceObjectExtension直接跟在DeviceExtension后面,统一存在一块内存中组成完整的一块设备扩展。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值