首页
社区
课程
招聘
[求助]关于设备对象中设备扩展的一点疑问
发表于: 2017-11-15 21:32 2296

[求助]关于设备对象中设备扩展的一点疑问

2017-11-15 21:32
2296
新手学驱动,一点疑问,可能有点小白,希望大神能解答一下。
首先关于设备扩展这个概念,我从网上获得的信息是在调用IoCreateDevice这个函数生成一个设备对象时,预留的一个空间,这个空间用来存放程序员自定义的一些数据(例如这个设备的名字或者链接符号等等。)
设备对象,是一个结构体,那么我的疑问就是,这个设备扩展 是否就是这个设备对象里面的一个元素。
如果是
那么有一下代码
typedef struct _TEST
{
UNICODE_STRING str;
}TEST,*PTEST
PTEST test;
IoCreateDevice(x,sizeof(TEST),x,x,x,x,&pdeviceobject);
test=(PTEST)pdevice->DeviceExtension;
然后是填充test的相关元素。
以上是常见用法
我的疑问是 test实际上是个单独的变量,我的理解  这个变量并不在生成的设备对象内。
那么 在调用 IoCreateDevice 填入sizeof(TEST)这个参数的意义何在呢?
我直接填入个NULL,然后把相关信息写进我自定义的结构体里不就得了?


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 12
活跃值: (142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
难道不应该加上这么一段代码吗?
pdeviceobject->DeviceExtension=(PVOID)test;
2017-11-15 21:45
0
雪    币: 12
活跃值: (142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好吧  仔细看了设备对象的结构原型后,我终于大彻大悟。
第二个参数只是size    并不是指针
在执行
test=(PTEST)pdevice->DeviceExtension;以后
test即为DEVICE_OBJECT中的DeviceExtension(设备扩展指针)
test的值等于DeviceExtension
我是把test当成结构来看了,忘记了它是一个指针
2017-11-15 21:59
0
游客
登录 | 注册 方可回帖
返回
//