阅读:2030回复:2
请教DeviceExtention.(太奇怪了)
在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. |
|
|
沙发#
发布于:2001-06-25 09:59
dx->c=1应该不会改变。你看看是不是在什么地方修改了它的值。
2个DeviceObject的值是一样的。 |
|
|
板凳#
发布于:2001-06-26 19:14
你是如何看到这个值的,用的是WATCH指令吗?如果是,那是看不出来的。
我所知道的一个非常笨的方法就是看汇编代码,然后跟踪积存器! 如果,你有好方法,也告诉我一下! |
|