阅读:2813回复:9
在Dispatch level的完成例程中调用须在Passive level运行的例程用户被禁言,该主题自动屏蔽! |
|
沙发#
发布于:2001-07-21 11:33
[QUOTE]原本由 无心化语 发表
[B]目的是在完成例程中向下一层驱动传递URB。 方法是: 发送在完成例程中构造的新的IRP到一个运行在Passive level的工作 线程,然后这个工作线程调用IoCallDriver(),重新发送Irp到底层 驱动程序。 问题在于,如何实现这段话?请高手支招。 [/B][/QUOTE] 我没有完全理解你的意思,用EXECUTIVE WORK ITEM可以吗? |
|
|
板凳#
发布于:2001-07-21 11:34
要不然用一个共享队列来存放这些IRP
|
|
|
地板#
发布于:2001-07-21 12:56
用户被禁言,该主题自动屏蔽! |
|
地下室#
发布于:2001-07-21 15:12
你仔细看看PROGRAMMING WDM的第九章的EXECUTIVE WORK ITEM可能能够解决你的问题。
|
|
|
5楼#
发布于:2001-07-22 14:31
你可以在初始化的时候创建一个线程,这个线程是处于等待状态,当条件满足的时候触发这个线程等待的事件或SEMAPHORE,让这个线程去调用运行等级是PASSIVE_LEVEL的函数,当然,必须指定这个线程运行的优先级,最好是LOW_REALTIME_PRIORITY
如果还有什么不明白的可以看一下《WINDOWS NT设备驱动设计指南》第14章的范例〈一个基于线程的驱动程序〉 |
|
6楼#
发布于:2001-07-23 08:37
用户被禁言,该主题自动屏蔽! |
|
7楼#
发布于:2001-08-13 16:49
给分呀
|
|
|
8楼#
发布于:2001-08-14 08:47
IoAllocateIrp如何呢?
|
|
9楼#
发布于:2010-07-29 13:12
建议用 workitem创建线程,降到Passive级
|
|