阅读:3466回复:10
驱动程序如何相互调用???
请教各位大虾,如何实现两个WDM驱动程序的相互调用,就象两个DLL调用一样???
|
|
|
沙发#
发布于:2001-04-09 10:21
Use CallDriver
|
|
|
板凳#
发布于:2001-04-16 16:53
KLowerDevice
|
|
|
地板#
发布于:2001-04-19 08:35
I don't think so. I've ever called a USB driver within a smartcard driver. They are not attached to the same device stack (I think so).
I think the upper drvice can send IRPs to the lower device to communicate with it. |
|
|
地下室#
发布于:2001-04-25 10:29
如果被调用的驱动程序是别人开发的,没有准备被调用,那它还能不能被调用?
SORRY,听起来象绕口令,也就是说,一个驱动程序要怎样做才能被调用? |
|
5楼#
发布于:2001-04-25 11:18
那样的话,应该是不能被别的driver调用的。因为驱动之间的调用要实现internal device io control,而且IOCTL CODE也要对应起来。
|
|
|
6楼#
发布于:2001-05-14 18:17
Internal Device Io Control啊!
|
|
|
7楼#
发布于:2001-05-15 09:43
只要你的驱动被命名,就有被调用的可能
|
|
8楼#
发布于:2001-05-15 15:33
具体点说是IoCreateDevice()的第三个参数,是个PUNICODE_STRING,其实是向NT的对象管理器汇报了一个对象,有了这个名字,其余内核态的组件就有可能通过对象管理器找到这个驱动
|
|
9楼#
发布于:2001-05-22 08:57
[QUOTE]原本由 LitteSW 发表
[B]我看Driver Work帮助中的How to Send a Request to Another Device时,有个问题看不明白。 I.IoctlCode(NEXT) = IOCTL_SERIAL_GET_BAUD_RATE; 这句是指我自定义的IOCTL码。 I.MajorFunction(NEXT) = IRP_MJ_DEVICE_CONTROL; 是否是指被调用驱动程序中的DeviceControl成员函数? [/B][/QUOTE] 1.yes 2.是一个IRP,发给接受调用的driver,这里就是Device Io Control的处理函数. |
|
|
10楼#
发布于:2001-05-22 09:38
首先我们要注意这样一个问题:
驱动程序是全局性的系统部件,一个驱动程序是可以看见别的驱动程序的。请大家仔细看一看2000DDK中的鼠标类驱动程序与鼠标功能驱动程序,鼠标类驱动程序(mouclass)提供给鼠标功能驱动程序的回调函数,鼠标功能驱动程序直接调用了鼠标类驱动程序(mouclass)提供的函数!! 驱动程序调用的方式有: ①使用别的驱动程序提供的调用接口服务,调用发声驱动beep.sys如何实现? ②直接调用对方,如前面提到的鼠标类驱动程序和鼠标功能驱动程序! 有事多交流! |
|