liyunch
驱动小牛
驱动小牛
  • 注册日期2001-06-28
  • 最后登录2014-09-05
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望134点
  • 贡献值0点
  • 好评度94点
  • 原创分0分
  • 专家分0分
阅读:2093回复:3

怎样才能在VXD中调用WIN32 API?

楼主#
更多 发布于:2001-06-28 11:57
能不能在VXD中调用32位的DLL? DDK中列出的PELDR_LoadModule能不能用来装入DLL? PELDR系列函数都是用来干什么的? 我试着装入KERNEL32.DLL可以,但装入其它dll就不行.装入KERNEL32.dll后用PELDR_GetProcAddress得到某个函数地址后一调用就出保护错.特请教诸位.

最新喜欢:

flyajiflyaji
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-30 23:44
PE LDR是用于PE格式的DRIVER加载的.不是让你用来调用WIN32的.
关于RING0->RING3的调用是个古老的话题了. RING0一般是不能调用
WIN32 API的. 一般是激活一事件. 让RING3搞定.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-07-02 16:21
一般可以如下使用PE LDR,vxd就能调用wdm(.sys)输出的函数:
1.  HPEMODULE hWdmMod;
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)
3.调用即可
int nret;
  nret= pfunctionAddress();
  
nigx
驱动巨牛
驱动巨牛
  • 注册日期2001-04-29
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分14166分
  • 威望71910点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-07-02 21:03
我刚刚在源代码分析中上传了一些vxd  的各种源代码,其中有你的回答。等待站长将其供下载。
游客

返回顶部