刚学DDK时对DeviceObject中的DeviceExtention指针的作用不是很清楚.
DeviceExtention是DeviceObject结构中的一个PVOID指针.
DeviceExtention的作用是可以自定义一个结构,存入一些你所要的变量,
比如说KEVENT ,DriverObjet等.
因为DeviceExtention是PVOID指针,故可以通过强制类型转换转换你所定义的结构.
此时你可以会问,这个自定义结构所占的内存空间是在什么时候分配的?
答案是:IoCreateDevice()函数中一个参数是sizeof(Your_DeviceExtention),
哈哈,明白了不,就是要通知IoCreateDevice你定义的结构占多少空间,
要是没有定义那就是0了.
分配的格局为:
DeviceObject主体
占sizeof(DeviceObject)
|
DeviceExtention所占用空间
点sizeof(DeviceExtention)
字节
|
小样,现在明白了吗, DeviceExtention就是自定义的结构,用于存放一些你所关心的变量.