win32应用程序如何与vxd直接通讯
来源:互联网 发布:犀牛软件4.0下载 编辑:程序博客网 时间:2024/06/05 17:53
一般而言,VXD与WIN32 应用程序通讯是使用DEVICEIOCONTROL,并且在NT中也是如此.
但WIN95与98提供了另外一种通讯方式.而且介绍VXD的书都或多或少提及,可是没有
具体的编程例子.下面我们来讨论这种方法.
Sleep(xx)是一常用函数,它是由Vmm32.vxD实现的,在经过一系列的中间代码之后
push xx ;xx 是立即数
push 00000009 ;高16位的0 是vmm32.vxd的ID号,底16位的9是此函数在VMM32.VXD
;中的编号.
call VXDCALL ;实现通讯的函数
这是书中对这种通讯方式的介绍.但如何编程,我们一步一步来.
1.系统使用的数据结构如下:
typedef struct { unsigned int No;//VXD提供的接口函数个数
unsigned int NULL;//为空,0
(??? *)fun1; //第一个函数的指针
unsigned int parameter1No;//第一个函数的参数个数
(??? *)fun2; //第二个函数的指针
unsigned int parameter2No;//第二个函数的参数个数
(??? *)fun3; //第三个函数的指针
unsigned int parameter3No;//第三个函数的参数个数
(??? *)fun4; //第四个函数的指针
unsigned int parameter4No;//第四个函数的参数个数
....
} win32service;
次数据结构的描述在VMM.INC中有.
2.使用的函数:
Register_Win32_Services按说明可以实现,但是参数的次序必须反过来,VC6的编译
器通不过,底版本可以通过.为了在任意版本中都可以,通过对此函数的跟踪,可以用内
嵌汇编的方法来实现.
在VMM.INC中查看DDB的结构描述,在DDB_VxD_Service_Table_Ptr;
DDB_VxD_Service_Table_Size;
之后是 DDB_Win32_Service_Table_Ptr;
DDB_Win32_Service_Table_Size;
Register..函数就是将win32service的指针放在此处.
因此,如何解决,大家就明白了
3.vxd的注意事项
一般vxd的???_DeviceID定义为UNDEFINED_DEVICE_ID
现在要在vtoolsd/include/vmm.h中定义一个值,例如为0x1234
4.如何调用:
现在情况类似于Sleep()的方式.
例如,vxd输出4个函数,欲调用第3个,而此函数有4个参数.
asm { push para1
push para2
push para3
push para4
push 12340002h
mov eax,bff713d4h
call eax
}
解释:1234H是此VXD的ID值,0002是被调用函数的编号(从0开始).
vxdcall的入口地址是0xbff713d4(无论是95或是98,地址不变).
现在,大家就可以直接调用vxd了.
更多驱动信息请到: http://www.qudong360.com
- win32应用程序如何与vxd直接通讯
- 详述C++语言的VxD与外界通讯的所有接口
- win32应用程序 与 mfc应用程序
- AP与modem直接通讯
- 驱动程序与应用程序的通讯
- Win32 行程通讯的观念与技术
- 如何“干净地”终止 Win32 中的应用程序
- 如何“干净地”终止 Win32 中的应用程序
- 如何“干净地”终止 Win32 中的应用程序
- 如何“干净地”终止 Win32 中的应用程序
- 如何“干净地”终止 Win32 中的应用程序
- 如何隐藏win32控制台应用程序的窗口
- 如何让WIN32应用程序支持MFC类库
- 如何让WIN32应用程序支持MFC类库
- Win32控制台应用程序如何更换图标
- Win32控制台应用程序如何调用另一个.exe
- Win32窗体应用程序如何添加资源文件?
- win32控制台应用程序与win32项目的区别
- 深入理解成员函数的重载、隐藏、覆盖规则
- 串口通信
- Java基础---类加载机制
- 2007年最佳发明--美国《时代》周刊
- VC小技巧20个
- win32应用程序如何与vxd直接通讯
- PHP的ereg()与eregi()的不同及相同点。对比
- 谈“80后”程序员为什么找不到工作?
- 关于oracle的用户认证
- JAVA自学路线图
- PowerDesigner教程系列(一)概念数据模型
- 北京苏家坨将建4537套经适房 配套修建中小学
- 各种数据库的连接方法
- 用53款全免费软件重装Windows(xbeta译)