阅读:1909回复:9
程序在XP SP2下的问题
我用DeviceIoControl,传个UCHAR类型的参数给驱动,结果在SP2下,传递的值会变成0!ft居然会有这种事。把SP2卸载就好了,2K下也OK。把类型改为DWORD也没有问题。
UCHAR type = 1;//无论给什么,驱动收到的都是0,偶尔会正常传递 DeviceIoControl(hMac, IOCTL_XXX, &Code, sizeof(Code), &type, sizeof(type), MyReturnedCount, NULL); 不知道是不是SP2在传递参数的时候,把字节位置弄错了。调试的机器上没有装SoftIce,没有看驱动接受的参数的地址后面是什么值。 不知道还有哪位大虾碰见类似问题,给个解释? |
|
沙发#
发布于:2004-11-05 12:58
呵,还好偶没装 SP2,太危险了 :D
结果期待中…… |
|
板凳#
发布于:2004-11-05 13:18
我用DeviceIoControl,传个UCHAR类型的参数给驱动,结果在SP2下,传递的值会变成0!ft居然会有这种事。把SP2卸载就好了,2K下也OK。把类型改为DWORD也没有问题。 可能是你的代码有问题 如果MyReturnedCount是 ULONG MyReturnedCount; type = x ; DeviceIoControl(hMac, IOCTL_XXX, &type, 1, NULL, 0, &MyReturnedCount, NULL); 如果MyReturnedCount是 ULONG *MyReturnedCount; type = x ; DeviceIoControl(hMac, IOCTL_XXX, &type, 1, NULL, 0, MyReturnedCount, NULL); |
|
|
地板#
发布于:2004-11-05 13:32
当然不会那么低级的错误,已经是个指针了
|
|
地下室#
发布于:2004-11-05 17:30
我XP升级到sp2,我的挂接程序也不好用了,
我是通过函数入口地址改写实现的 后来调试发现XP_sp2下函数入口无缘无故多了2字节, 导致指令顺序乱掉,系统进程over, 你还是跟踪一下好了 |
|
|
5楼#
发布于:2004-11-05 20:39
把汇编代码贴出来,贴C代码能说明什么问题????
|
|
|
6楼#
发布于:2004-11-08 13:58
看看你的IoControlCode的定义,是不是出了什么问题。
|
|
7楼#
发布于:2004-11-09 16:16
放分 OK?
|
|
|
8楼#
发布于:2005-01-23 11:50
顶啊!
我的程序更加糟糕,应用端的线程好象都没法同步,结果IO命令没办法串行,最后设备STALL! |
|
9楼#
发布于:2005-01-25 11:48
sp2的问题多多呀,尤其是兼容性问题
|
|