jm_tang
驱动牛犊
驱动牛犊
  • 注册日期2001-05-08
  • 最后登录2002-05-15
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1341回复:3

使用VXD服务的问题

楼主#
更多 发布于:2001-11-10 11:49
我用Vtoolsd生成了一个简单的vxd,它有一个服务(以下是Vtoolsd自动生成的)
#define AAA_DeviceID 0x2000
class AAADevice : public VDevice
{
public:
virtual BOOL OnSysDynamicDeviceInit();
virtual BOOL OnSysDynamicDeviceExit();
virtual DWORD OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams);
static _cdecl AAA_GetData(); //service在这里
static _cdecl AAA_SetData(); //service在这里
};
....................
Begin_VxD_Service_Table(AAA)
VxD_Service(AAA_GetData)
VxD_Service(AAA_SetData)
End_VxD_Service_Table
在另一个BBB.VXD中想调用这个服务,另一个是汇编写的
vxdcall AAA_GetData
在inc文件中包含了下面的东东(我也不知为什么(抄来的),没它编译就出错)
Begin_Service_Table AAA
 AAA_Service   AAA_GetData, LOCAL
 AAA_Service   AAA_SetData, LOCAL
End_Service_Table AAA
结果:两个VXD分别工作都很成功,但就是调用不出预期的结果,也没报错
问题:一个VC编译的VXD和一个MASM编译的VXD如何相互调用服务

最新喜欢:

flyajiflyaji
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-11-10 19:09
我前两天刚回答过这个问题,里面付了一个头文件,说明如何调用。

“50分大赠送:谁能提供一个调用_VXD_Service的使用DDK制作的例子驱动VXD程序 。”
http://www.driverdevelop.com/forum/showthread.php?threadid=5061


穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-11-11 13:04
你的VXD_service都不含参数,应该好处理,你的BBB.vxd能调到AAA.vxd吗?
另外你少输出一项服务: AAA_GetVision,一般VXD服务都要有此项服务,当然你的AAA.vxd是静态的,可能也无所谓。
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-11-11 23:06
1)你的VXD_service都不含参数,应该好处理,你的BBB.vxd能调到AAA.vxd吗?

在VXD_service定义中,当然不能带参数。你可以定义函数声明,在里面定义参数。

2)另外你少输出一项服务: AAA_GetVision,一般VXD服务都要有此项服务,当然你的AAA.vxd是静态的,可能也无所谓。

我的服务表中有GetVersion。


穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
游客

返回顶部