LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2747回复:11

驱动间相互调用的问题!

楼主#
更多 发布于:2001-07-23 23:18
我想在WDM中实现VTOOSD中的VXD_SERVICE_TABLE服务,现在模型我已经比较清楚了,但在实现细节上有几个问题一直想不通,请大家帮忙。

1.在VXD中,调用是通过声明了一个CallVXD实现的。CallVXD原形具体如下:
#define VxDCall(service) \
    _asm db 0xcd; _asm db 0x20; _asm dd __##service;

在WDM中,如何实现类似的函数调用?

2.函数的参数应该如何传递?

最新喜欢:

utahyjutahyj
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
hechao
驱动牛犊
驱动牛犊
  • 注册日期2001-06-29
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-07-24 11:55
1 VxDCall是微软不提倡的一种调用方式
2 如果在nt或2000里面,可以使用irp方式进行驱动间的通信。
具体看iocalldriver函数
鬼子就是鬼子,永远变不成人!
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-07-24 18:02
用irp方式进行驱动间的通信效率比较低。
我想用NT下提供的紧耦合方式实现,这样效率比较高。



[LitteSW 编辑于 2001-07-24 18:06]
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
peng-416
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-07-27 07:42
如果两个驱动程序都有是你的:OK
     1.取得你想通讯的设备对象.
     2.IoCallDriver().

LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-28 17:08
老兄:我也知道用IoCallDriver(),但是这种方式进行驱动间的通信效率比较低。
所以我想用NT下提供的紧耦合方式实现,这样效率比较高。

而且想把它作成一个通用接口,类似于VXD中的VXD_SERVICE_TABLE宏。





穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2001-07-30 23:23
如果要快的话,有一种非常简单的方法。
例如说A要调用B,你先在编译B的时候输出一个
函数,生成一个LIB,这样你的B.SYS的EXPORTS
里面就有这个函数的入口。
然后在编译A的时候,EXTERN FUNC

加载的时候,保证B比A先加载,否则PELOADER
找不到B,无法修改A的IMPORT表,会DUMP。

具体操作,参看BBS.WHNET.EDU.CN sysinternals
版。

不再回忆从前,我已经生活在幸福当中。
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-07-31 09:07
walt oney's generic.sys, the best example!
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-08-01 23:32
感谢斑竹的帖子。

walt oney的generic.sys例子我也看过了,不过我现在不是想做简单的实验。我想做套类似于VXD中的VXD_SERVICE_TABLE,在以后开发起来可以直接用,而且兼容DriverWorks的类库。

穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
abeh
驱动牛犊
驱动牛犊
  • 注册日期2001-04-10
  • 最后登录2003-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-08-03 21:41
使用ZWCreateFile等函数,与Win32当中的CreateFile相似,详见Chris Cant的DebugPrint
我爱开发
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-08-09 15:02
To LitteSW:
  你做的怎么样了?这几天很忙,等忙过了再跟你一起研究!
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2001-08-12 17:43
To dazzy:

  这几天我出去旅游了,刚回来,这个问题还没开始做。

  希望各位大侠多多提供思路。
 
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
peng-416
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2001-08-13 16:47
这问题没什么难的,你看看ntddk.h吧!
游客

返回顶部