hupeng
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2018-05-28
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望117点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1804回复:8

vxd 如何调用SYS的接口?

楼主#
更多 发布于:2001-08-30 17:27
我用DDK编写了一个VXD,用WDM方式编写了一个SYS。在SYS中有一个接口MyFunc(),如何在VXD中调用SYS中的MyFunc().

谢谢!

最新喜欢:

linwnlinwn
hp
Nouk
驱动中牛
驱动中牛
  • 注册日期2001-08-22
  • 最后登录2006-10-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-04 10:13
版主,
    你好!
    谢谢指导,我正在根据您的指导做实验。不过,我问过其他高手,他们说VXD不可能调用调用WDM的函数,不知道你是否确认这样一定可以,谢谢!

I could sure,too!!!
Plz ref the sample UMSS from M$ web.
Taiwan's Driver Developer
gzganyuxuan
驱动牛犊
驱动牛犊
  • 注册日期2002-03-05
  • 最后登录2002-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-04 09:05
版主,
    你好!
    谢谢指导,我正在根据您的指导做实验。不过,我问过其他高手,他们说VXD不可能调用调用WDM的函数,不知道你是否确认这样一定可以,谢谢!
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-04 08:18
在source文件中将WDM设为EXPORT_DRIVER,然后建立DEF文件输出函数名。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
gzganyuxuan
驱动牛犊
驱动牛犊
  • 注册日期2002-03-05
  • 最后登录2002-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-03 17:51
兄弟,
   不知道这个问题你解决了没有,我现在也遇到这个问题,如果已经解决请指导一下,谢谢!
   我已经非常明确的取到sys模块的句柄,但还是取不到导入函数的地址,也就是取到的导入函数地址=0;
HPEMODULE hWdmMod;
typedef int (_stdcall *Funaddress)(int);
Funaddress pfn;
hWdmMod=PELDR_GetModuleHandle(\"UsbKDev.sys\");
pfn=PELDR_GetProcAddress(hWdmMod,\"myfunc\",0);
结果:pfn=0;

LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-08-31 17:24
你能确定函数已经导出了吗?

生成LIB文件了吗?

若不行,换成DEF文件试试!



穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
hupeng
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2018-05-28
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望117点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2001-08-31 10:01
我试过了,但pfunctionAddress=NULL,为什么?
pfunctionAddress=(Funaddress) _PELDR_GetProcAddress(hWdmMod, "funName",0)
hp
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-08-30 22:40
这个问题以前好象讨论过。而且论坛上有VXD调用WDM方式的文章,请你参考一下。

简单说一下:
将WDM驱动中的接口函数用_declspec(dllexport) 导出,在VXD中用LoadModule加载SYS驱动,实现两者间的通讯。

穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
hupeng
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2018-05-28
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望117点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2001-08-30 18:29
补充:
我下面的方法调用,pfunctionAddress总是为空,为什么?
hWdmMod = _PELDR_GetModuleHandle(“sysname.sys”);
if (!hWdmMod)
return (VXD_FAILURE);
2.使用_PELDR_GetProcAddress()取得地址:
typedef int (_stdcall *Funaddress)(PVOID);
Funaddress pfunctionAddress;
pfunctionAddress=(Funaddress) _PELDR_GetProcAddress(hWdmMod, "funName",0)


****pfunctionAddress总是为NULL
hp
游客

返回顶部