he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1781回复:9

应用程序如何获得已启动的静态VXD的句柄?

楼主#
更多 发布于:2003-10-14 11:59
应用程序如何获得已启动的静态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
   );

不知是不是哪里错了,或者应该用其它方法,或者根本就无法获得?

请高手指点。。。。。。。。。。。。
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-14 12:10
把你的Vxd放在System目录下
jacobqzl
驱动小牛
驱动小牛
  • 注册日期2001-10-10
  • 最后登录2005-04-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-14 13:05
h=CreateFile(\"\\\\\\\\.\\\\my.vxd\",0,0,0,0,FILE_FLAG_DELETE_ON_CLOSE,0); //打开静态VxD,或动态装入VxD
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-14 13:15
首先,我保证我的相应静态VXD在Windows\\system目录中,且该VXD已于系统启动时被启动(用VToolsD中的VxD Viewer工具能看到).

不过,我用版主jacobqzl的方法试了,还是不行,h==INVALID_HANDLE_VALUE,且GetLastError()==ERROR_FILE_NOT_FOUND,

怎么办?你们都试了吗?

真把人急死了
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
jhome
驱动牛犊
驱动牛犊
  • 注册日期2002-07-04
  • 最后登录2005-01-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-14 13:49
good
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
5楼#
发布于:2003-10-14 14:18
试试:

CreateFile(
\"\\\\\\\\.\\\\XXX\",  // 不加\".VxD\"
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL
);
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-10-14 14:38
先前就试过了,不行,返回结果是hDevice==INVALID_HANDLE_VALUE,GetLastError()==ERROR_NOT_SUPPORTED,

烦啊烦,老大难,
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-10-14 16:48
你的vxd是干什么的?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-10-14 16:56
终于搞定了,版主jacobqzl和seaquester的方法均能成功,我以前也试过,可就是没成功,
原来是我在VXD中忘了响应DeviceIoControl,所以导致ERROR_NOT_SUPPORTED,

现在可好了,我要加分了哦.

不过倒底用以上两种方法中的哪一种较好呢?
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-10-14 16:58
哦,不对,jacobqzl不能得分,因为他在my后加了.vxd,所以要导致ERROR_FILE_NOT_FOUND, :P
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
游客

返回顶部