blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1957回复:6

lu0,能告诉我怎样使用紧耠合方式

楼主#
更多 发布于:2001-08-09 15:33
驱动之间调用可以使用IRP方式,但我想作一个类似API但是在内核中的东东,由一个驱动对另一个驱动提供一系列函数接口,所以人看书上的知识是紧耠合方式最适合了。紧耠合方式与Oneys的Generic.sys是一回事吗?听说DDK中的鼠标程序中使用了紧耠合,但具体中哪两个?使用到哪几个函数?
在Generic.sys中我怎么看不出在哪别的驱动程序中在哪调用了generic.sys, 是在AddDriver()中吗?
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-11 11:39
驱动之间的通信和调用是通过IRP解决的. 将自己的DEVICE OBJECT挂接到目标DEVICE OBJECT上. 让其他CALLER任务自己的DEVICE OBJECT是IRP的发送目标. 然后自己经过处理后将IRP通过IOCALLDRIVER发送到目标DEVICE.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
sttypxx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-17
  • 最后登录2011-04-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-11 15:54
下面是DDK中的一段说明:
Mouclass uses an IOCTL_INTERNAL_MOUSE_CONNECT request to connect its class service callback to a mouse device
VOID   MouseClassServiceCallback (
       IN PDEVICE_OBJECT DeviceObject,
       IN PMOUSE_INPUT_DATA InputDataStart,
       IN PMOUSE_INPUT_DATA InputDataEnd,
       IN OUT PULONG InputDataConsumed);
The MouseClassServiceCallback routine is the class service callback that is provided by Mouclass. A function driver calls the class service callback in its ISR dispatch completion routine. The class service callback transfers input data from the input data buffer of a device to the class data queue.
1。鼠标类驱动程序向鼠标的功能驱动程序发送IOCTL_INTERNAL_MOUSE_CONNECT request 以便传送这个回调函数的地址;
2。鼠标的功能驱动程序在合适的时候调用类驱动程序定义的这个函数以传递鼠标事件;
这是否符合你认为的紧耠合方式??
看看DDK文档和DDK中的事例,你就明白。
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-08-14 20:20
我认为generic.sys是一个紧耦合的例子。

其中导出的一些接口函数,不就是内存函数列表吗?

但是,其中的结构,我还没有搞清楚,还希望大家多指点。
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-08-22 17:58
我也不知是不是紧耠方式,但最得要的是能输出函数,而且保证效率就可!
好啦,给分,我以我的标准给分,少了也别怨。
BSOD
驱动牛犊
驱动牛犊
  • 注册日期2001-09-28
  • 最后登录2004-09-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-09-29 00:51
tight-coupled inter-driver communication is done by EXPORTED_DRIVER which is a kmd dll.

The exported driver exports APIs to other driver or KMD component. When an exported driver is build,a .lib file will be generated, other driver that need to call those API, just link itself with the .lib. You don't have to load the exported driver(like generic.sys) in your driver.

NT/2000's storage driver stack is a good example to demostrate this mechanism.
COOL NDIS
masmasm
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-16分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-09-30 18:40
写一个kernel dll 可以解决问题
http://www.osr.com/ntinsider/1997/krndll.htm
游客

返回顶部