Borden
驱动牛犊
驱动牛犊
  • 注册日期2001-07-10
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1943回复:7

怎样将设备产生的中断经由驱动程序传递到客户程序?

楼主#
更多 发布于:2001-08-30 09:45
在设备产生中断的时候,怎样在DpcForIsr中通知客户程序设备已经产生了中断?Under Windows2000 WDM。知道的一定说一声!谢谢!

最新喜欢:

hapihapi
leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-30 10:31
如果你在应用程序中使用同步I/O来读写设备时,当你的程序发出读写请求时你的应用程序是被阻塞的,直到你的设备驱动程序调用IoCompleteRequest()完成该读写请求。所以你只要在DpcForIsr中调用IoCompleteRequest()便可。
leerom
Borden
驱动牛犊
驱动牛犊
  • 注册日期2001-07-10
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-30 10:43
这个我明白,可是我不能被阻塞啊,发完第一个WriteFile之后我马上要准备第二帧数据,不然就来不及了,速度要求很高。我想得到一种驱动程序到应用程序的通讯机制,比如发个Event什么的,但所有书上好像都没提这事,能帮帮我吗?我正在失恋,实在没有力气去啃大部头的DDK Help啊!谢谢了
juanshu
驱动牛犊
驱动牛犊
  • 注册日期2001-06-17
  • 最后登录2014-11-05
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望45点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-08-30 11:31
可以使用EVENT机制
现在DriverEntry中初始化一个EVENT对象,例如:
UNICODE_STRING eventName ;

RtlInitUnicodeString (&eventName, L"\\BaseNamedObjects\\XXXXReadEvent") ;
extension->NotifyEvent = IoCreateSynchronizationEvent(&eventName,
&extension->NotifyEventHandle) ;
if (!extension->NotifyEvent) {

status = STATUS_UNSUCCESSFUL;

goto done_DriverEntry;
}
KeClearEvent (extension->NotifyEvent) ;

在需要的地方发出通知事件:
KeSetEvent(extension->NotifyEvent,0,FALSE);

在应用程序中用OpenEvent打开一个与XXXXReadEvent同名的EVENT句柄,再用WaitForSingleObject等待该EVENT即可
leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-08-30 11:35
那用异步I/O吧,开30个缓冲区,然后从应用连发30 I/O请求,再用WaitForMultipleObject()等待。专栏里有篇文章《nt/2000pci设备驱动程序详解》还有些代码可以参考一下,不过我在NT4.0下用有点问题,主要是在WaitForMultipleObject()前要先判断一下ReadFile出错代码是否为ERROR_IO_PENDING,如果是再用调用WaitForMultipleObject()。
leerom
Borden
驱动牛犊
驱动牛犊
  • 注册日期2001-07-10
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-08-30 15:55
太谢谢了!以后我要是有儿子了,我让他管你们也叫爹!
leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-08-30 16:07
也别光说不做,先给点分润一润手吗!
leerom
Borden
驱动牛犊
驱动牛犊
  • 注册日期2001-07-10
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-08-30 16:32
不是不给,关键是我不想结贴啊,明天吧,明天我就知道能不能调出来了,好吗?
游客

返回顶部