isware
驱动牛犊
驱动牛犊
  • 注册日期2006-01-24
  • 最后登录2013-04-15
  • 粉丝0
  • 关注0
  • 积分385分
  • 威望79点
  • 贡献值0点
  • 好评度38点
  • 原创分0分
  • 专家分0分
阅读:1670回复:5

简单问题:关于设备扩展的初始化

楼主#
更多 发布于:2007-07-30 11:04
我看了下sfilter 和filespy的代码,里面都定义了自己的设备扩展结构,可是遍历了所有代码都没找到该扩展结构是怎么初始化和赋值的,好象只是在调用IoCreateDeveice函数创建过滤驱动设备对象时,指定了一个设备扩展的大小,然后可能该函数会自动分配一段内存来存放设备扩展结构体。驱动的其他代码以及函数里只看到类似于下面这种使用的代码:
IoCallDriver(((PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension)->AttachedToDeviceObject, Irp);
PSFILTER_DEVICE_EXTENSION DevExt = (PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension;

感觉很晕啊,结构体是developer自己定义的,系统应该不知道怎么初始化和赋值吧,就算知道,恐怕也只应该知道AttachedToDeviceObject这个默认字段啊!高手帮忙解释下,谢谢了!
isware
驱动牛犊
驱动牛犊
  • 注册日期2006-01-24
  • 最后登录2013-04-15
  • 粉丝0
  • 关注0
  • 积分385分
  • 威望79点
  • 贡献值0点
  • 好评度38点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-31 08:48
顶一顶
jl2004
驱动小牛
驱动小牛
  • 注册日期2007-04-10
  • 最后登录2011-02-22
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望276点
  • 贡献值0点
  • 好评度129点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-31 09:26
是自己定义的,系统没说要对其进行处理,
所以所有的操作都是由自己处理.
向前,向前,向前....
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地板#
发布于:2007-07-31 09:27
就是在这儿弄的.在设备创建后,设备扩展是空的,你自己使用就行了.


设备扩展就相当于跟随设备对象的全局变量区.

如果你把一个设备对象想象成一个c++ 对象的话,设备扩展就是该c++对象的成员变量区
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
isware
驱动牛犊
驱动牛犊
  • 注册日期2006-01-24
  • 最后登录2013-04-15
  • 粉丝0
  • 关注0
  • 积分385分
  • 威望79点
  • 贡献值0点
  • 好评度38点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-31 10:05
我知道是这么个意思,只是我在sfilter以及filespy中没有找到类似的代码片段。都是直接拿来就用了,感觉很突兀啊!
geland
驱动牛犊
驱动牛犊
  • 注册日期2003-12-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望251点
  • 贡献值0点
  • 好评度54点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-07-31 15:02
你仔细找找,一定有的,只是你没有找到而已!
游客

返回顶部