阅读:1802回复:8
vxd 如何调用SYS的接口?
我用DDK编写了一个VXD,用WDM方式编写了一个SYS。在SYS中有一个接口MyFunc(),如何在VXD中调用SYS中的MyFunc().
谢谢! |
|
最新喜欢:![]()
|
沙发#
发布于: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 |
|
|
板凳#
发布于:2001-08-30 22:40
这个问题以前好象讨论过。而且论坛上有VXD调用WDM方式的文章,请你参考一下。
简单说一下: 将WDM驱动中的接口函数用_declspec(dllexport) 导出,在VXD中用LoadModule加载SYS驱动,实现两者间的通讯。 |
|
|
地板#
发布于:2001-08-31 10:01
我试过了,但pfunctionAddress=NULL,为什么?
pfunctionAddress=(Funaddress) _PELDR_GetProcAddress(hWdmMod, "funName",0) |
|
|
地下室#
发布于:2001-08-31 17:24
你能确定函数已经导出了吗?
生成LIB文件了吗? 若不行,换成DEF文件试试! |
|
|
5楼#
发布于: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; |
|
6楼#
发布于:2002-07-04 08:18
在source文件中将WDM设为EXPORT_DRIVER,然后建立DEF文件输出函数名。
|
|
|
7楼#
发布于:2002-07-04 09:05
版主,
你好! 谢谢指导,我正在根据您的指导做实验。不过,我问过其他高手,他们说VXD不可能调用调用WDM的函数,不知道你是否确认这样一定可以,谢谢! |
|
8楼#
发布于:2002-07-04 10:13
版主, I could sure,too!!! Plz ref the sample UMSS from M$ web. |
|
|