opera
驱动牛犊
驱动牛犊
  • 注册日期2001-05-10
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1982回复:2

请教DeviceExtention.(太奇怪了)

楼主#
更多 发布于:2001-06-23 15:39
在Adddevice中给出如下代码:
PTSSG_DEVICE_EXTENSION dx = (PTSSG_DEVICE_EXTENSION)fdo->DeviceExtension;
dx->DeviceObject = fdo;
dx->b = 10;
在应用程序中调用DEVICEIOCONTROL,驱动在Dispatchiocontrol中响应,从deviceextention中取值时,dx->DeviceObject得到正确值,
dx->b为0。又尝试增加了dx->DeviceObject1 = fdo;和dx->c=1;结果
得到DeviceObject1的值是正确的,dx->c=0;
其中DeviceObject(1)均为PDEVICE_OBJECT型。b为int型,c为BOOLEAN型。哪位能指点一下啊?太奇怪了。难道还跟类型有关么?必须是指针型?也不对啊。两边的输入参数fdo还相等。
另外在安装处理pnp_start_device时,是可以得到所有正确的四个数的。只有当应用层通过interface访问驱动,就出现只能得到部分值。
在安装过程中,系统曾3次发出pnp_mn_query_interface.
我是宝剑,我是火花。 我愿生如闪电般的耀亮, 我愿死如彗星般的迅忽。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-25 09:59
dx->c=1应该不会改变。你看看是不是在什么地方修改了它的值。
2个DeviceObject的值是一样的。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-26 19:14
你是如何看到这个值的,用的是WATCH指令吗?如果是,那是看不出来的。
我所知道的一个非常笨的方法就是看汇编代码,然后跟踪积存器!
如果,你有好方法,也告诉我一下!
游客

返回顶部