阅读:1781回复:9
应用程序如何获得已启动的静态VXD的句柄?
应用程序如何获得已启动的静态VXD的句柄?
======================================= 若是动态VXD,那么可用CreateFile(\"\\\\\\\\.\\\\XXX.VXD\",...)来获得,但是,如果是已启动的静态VXD又该怎么获得呢? 不知是不是还是用CreateFile(...),或许是我的参数用错了,总返回2号错误(ERROR_FILE_NOT_FOUND),我的作法为: CreateFile( \"\\\\\\\\.\\\\XXX.VXD\", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL ); 不知是不是哪里错了,或者应该用其它方法,或者根本就无法获得? 请高手指点。。。。。。。。。。。。 |
|
|
沙发#
发布于:2003-10-14 12:10
把你的Vxd放在System目录下
|
|
板凳#
发布于:2003-10-14 13:05
h=CreateFile(\"\\\\\\\\.\\\\my.vxd\",0,0,0,0,FILE_FLAG_DELETE_ON_CLOSE,0); //打开静态VxD,或动态装入VxD
|
|
地板#
发布于:2003-10-14 13:15
首先,我保证我的相应静态VXD在Windows\\system目录中,且该VXD已于系统启动时被启动(用VToolsD中的VxD Viewer工具能看到).
不过,我用版主jacobqzl的方法试了,还是不行,h==INVALID_HANDLE_VALUE,且GetLastError()==ERROR_FILE_NOT_FOUND, 怎么办?你们都试了吗? 真把人急死了 |
|
|
地下室#
发布于:2003-10-14 13:49
good
|
|
5楼#
发布于:2003-10-14 14:18
试试:
CreateFile( \"\\\\\\\\.\\\\XXX\", // 不加\".VxD\" GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL ); |
|
|
6楼#
发布于:2003-10-14 14:38
先前就试过了,不行,返回结果是hDevice==INVALID_HANDLE_VALUE,GetLastError()==ERROR_NOT_SUPPORTED,
烦啊烦,老大难, |
|
|
7楼#
发布于:2003-10-14 16:48
你的vxd是干什么的?
|
|
|
8楼#
发布于:2003-10-14 16:56
终于搞定了,版主jacobqzl和seaquester的方法均能成功,我以前也试过,可就是没成功,
原来是我在VXD中忘了响应DeviceIoControl,所以导致ERROR_NOT_SUPPORTED, 现在可好了,我要加分了哦. 不过倒底用以上两种方法中的哪一种较好呢? |
|
|
9楼#
发布于:2003-10-14 16:58
哦,不对,jacobqzl不能得分,因为他在my后加了.vxd,所以要导致ERROR_FILE_NOT_FOUND, :P
|
|
|