阅读:1670回复:5
简单问题:关于设备扩展的初始化
我看了下sfilter 和filespy的代码,里面都定义了自己的设备扩展结构,可是遍历了所有代码都没找到该扩展结构是怎么初始化和赋值的,好象只是在调用IoCreateDeveice函数创建过滤驱动设备对象时,指定了一个设备扩展的大小,然后可能该函数会自动分配一段内存来存放设备扩展结构体。驱动的其他代码以及函数里只看到类似于下面这种使用的代码:
IoCallDriver(((PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension)->AttachedToDeviceObject, Irp); PSFILTER_DEVICE_EXTENSION DevExt = (PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension; 感觉很晕啊,结构体是developer自己定义的,系统应该不知道怎么初始化和赋值吧,就算知道,恐怕也只应该知道AttachedToDeviceObject这个默认字段啊!高手帮忙解释下,谢谢了! |
|
沙发#
发布于:2007-07-31 08:48
顶一顶
|
|
板凳#
发布于:2007-07-31 09:26
是自己定义的,系统没说要对其进行处理,
所以所有的操作都是由自己处理. |
|
|
地板#
发布于:2007-07-31 09:27
就是在这儿弄的.在设备创建后,设备扩展是空的,你自己使用就行了.
设备扩展就相当于跟随设备对象的全局变量区. 如果你把一个设备对象想象成一个c++ 对象的话,设备扩展就是该c++对象的成员变量区 |
|
|
地下室#
发布于:2007-07-31 10:05
我知道是这么个意思,只是我在sfilter以及filespy中没有找到类似的代码片段。都是直接拿来就用了,感觉很突兀啊!
|
|
5楼#
发布于:2007-07-31 15:02
你仔细找找,一定有的,只是你没有找到而已!
|
|