20楼#
发布于:2002-02-01 17:59
我是说你没有错
我真丢人 :( |
|
|
21楼#
发布于:2002-02-01 19:10
你APP和VXD中inbuf的结构一样么?
我认为是这个原因 |
|
|
22楼#
发布于:2002-02-01 20:03
你的设备驱动程序什么情况下返回失败(返回 1)?
如果你做了参数校验,snare 的推断就有道理。vxd 中结构通常是按字节对齐,而要想 32 位应用程序按字节对齐,需要加一句 #pragma pack(2)。 还有,debugview 是个很好的系统调试信息输出窗口,才 200k 左右,很好用,站上好像就有,为什么不下一个? |
|
|
23楼#
发布于:2002-02-02 10:24
这是书上的例子,在我这没一点问题,把你的邮箱告诉我,我把我的发给你,或者你把你的发到chen_yu_zhong@263.net,对的和错的一比较,很快就能发现错误的所在。
不过我大约5号就走人了,如果你在这之后看见我的帖子的话,那就等过完年再说吧。 |
|
24楼#
发布于:2002-02-02 10:56
本站帖子可以粘贴附件
那我就直接把我的贴上来了,jiaxu你也把你的贴上来吧。 |
|
25楼#
发布于:2002-02-04 10:07
你APP和VXD中inbuf的结构一样么? 以前的结构是一样的,后来在驱动里面,我索性根本不处理InBuf中的数据,直接返回一个OutBuf。 顺便问一下,CreateFile()中为什嬷要用Create_new,这样会导致我的工作目录中不能有VXD,否则就有错。而且,我好像必须指明路径(\\\\\\\\.\\\\d:\\\\driverdevelop\\\\apptovxd\\\\apptovxd.vxd),不能直接用默认的(\\\\\\\\.\\\\apptovxd.vxd),否则,就会有问题,error = 2。 |
|
|
26楼#
发布于:2002-02-04 10:24
你的设备驱动程序什么情况下返回失败(返回 1)? VToolsD中本来有一个debugmonitor,可是打开default通道,无法捕捉到dout输出,也就没有用它了。 |
|
|
27楼#
发布于:2002-02-04 10:30
这是书上的例子,在我这没一点问题,把你的邮箱告诉我,我把我的发给你,或者你把你的发到chen_yu_zhong@263.net,对的和错的一比较,很快就能发现错误的所在。 我把我的程序发给你,有时间,麻烦你看一下了。 我想,除了CreateFile()中的VXD加载路径不同外,其他都一样。 谢谢。 |
|
|
28楼#
发布于:2002-02-04 11:23
找不出问题
因为你们的程序在我这里都能通过,没有任何问题。 而且jiaxu的要好一些,因为你在 if (!DeviceIoControl(hDevice,ADDXY,pxy,0,&z,sizeof(int),0,NULL)) 里为输出buf指定了长度。(但这对于本程序无影响) 还有在我这里,无论相对路径还是绝对路径都可以。 但是如果是绝对路径的话,单个目录名要不超过8个字符 |
|
|
29楼#
发布于:2002-02-04 12:11
jiaxu,你的程序在我这里完全没有问题,能得到正确的结果,我除了把路径改成\\\\\\\\.\\\\d:\\\\driver~1\\\\apptovxd\\\\apptovxd.vxd外,没对你的程序做任何修改,正如楼上所说的,绝对路径名不能超过8字符,用你原来的路径我这里就不能打开VXD。而且我用\\\\\\\\.\\\\apptovxd.vxd这个路径也是可以的。
实在想不出你那里到底是什么问题。 另外,VTOOLSD自带的debugmonitor,是可以捕捉到dout输出的,例如: dout<<\"In VXD\"<<endl; 执行这句程序后debugmonitor就会显示In VXD。 |
|
30楼#
发布于:2002-02-04 13:50
谢谢各位。知道正确就行了。
再次说声谢谢。 |
|
|
上一页
下一页