阅读:2749回复:11
驱动间相互调用的问题!
我想在WDM中实现VTOOSD中的VXD_SERVICE_TABLE服务,现在模型我已经比较清楚了,但在实现细节上有几个问题一直想不通,请大家帮忙。
1.在VXD中,调用是通过声明了一个CallVXD实现的。CallVXD原形具体如下: #define VxDCall(service) \ _asm db 0xcd; _asm db 0x20; _asm dd __##service; 在WDM中,如何实现类似的函数调用? 2.函数的参数应该如何传递? |
|
最新喜欢:![]()
|
沙发#
发布于:2001-08-13 16:47
这问题没什么难的,你看看ntddk.h吧!
|
|
板凳#
发布于:2001-08-12 17:43
To dazzy:
这几天我出去旅游了,刚回来,这个问题还没开始做。 希望各位大侠多多提供思路。 |
|
|
地板#
发布于:2001-08-09 15:02
To LitteSW:
你做的怎么样了?这几天很忙,等忙过了再跟你一起研究! |
|
地下室#
发布于:2001-08-03 21:41
使用ZWCreateFile等函数,与Win32当中的CreateFile相似,详见Chris Cant的DebugPrint
|
|
|
5楼#
发布于:2001-08-01 23:32
感谢斑竹的帖子。
walt oney的generic.sys例子我也看过了,不过我现在不是想做简单的实验。我想做套类似于VXD中的VXD_SERVICE_TABLE,在以后开发起来可以直接用,而且兼容DriverWorks的类库。 |
|
|
6楼#
发布于:2001-07-31 09:07
walt oney's generic.sys, the best example!
|
|
7楼#
发布于: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 版。 |
|
|
8楼#
发布于:2001-07-28 17:08
老兄:我也知道用IoCallDriver(),但是这种方式进行驱动间的通信效率比较低。
所以我想用NT下提供的紧耦合方式实现,这样效率比较高。 而且想把它作成一个通用接口,类似于VXD中的VXD_SERVICE_TABLE宏。 |
|
|
9楼#
发布于:2001-07-27 07:42
如果两个驱动程序都有是你的:OK
1.取得你想通讯的设备对象. 2.IoCallDriver(). |
|
10楼#
发布于:2001-07-24 18:02
用irp方式进行驱动间的通信效率比较低。
我想用NT下提供的紧耦合方式实现,这样效率比较高。 [LitteSW 编辑于 2001-07-24 18:06] |
|
|
11楼#
发布于:2001-07-24 11:55
1 VxDCall是微软不提倡的一种调用方式
2 如果在nt或2000里面,可以使用irp方式进行驱动间的通信。 具体看iocalldriver函数 |
|
|