| 
					阅读:1764回复:3
				 内核线程创建
					我想在IRP_MJ_READ派遣例程中,发送IRP给文件系统层前创建一个IRP,但是这个IRP的创建必须在PASSIVE_LEVEL,可是读请求有时运行在APC_LEVEL,有时在PASSIVE_LEVEL。对于在APC级别,如何创建我自己想要的IRP,我想通过降低irql,可是内核没有相应的函数;创建线程,使其运行在PASSIVE,再在线程中创建IRP,但是PsCreateSystemThread的调用必须在PASSIVE级别。第三种方式,就是在PASSIVE级别的例程中创建线程,通过事件使该线程和读派遣例程进行通信,但是这种方式比较麻烦。所以请教有什么更好的方法可以达到我的目的?				 | |
| 禁止发言   | 沙发#发布于:2010-11-12 11:24 用户被禁言,该主题自动屏蔽! | 
| 板凳#发布于:2010-11-13 07:52 
					或者可以使用workitem				 | |
| 
 | 
| 地板#发布于:2010-11-16 08:51 
					读写例程里创建irp 试一试 ASSERT((MajorFunction == IRP_MJ_READ) || (MajorFunction == IRP_MJ_WRITE)); KeInitializeEvent(&Event, NotificationEvent, FALSE); Irp = IoBuildSynchronousFsdRequest( MajorFunction, DeviceObject, Buffer, Length, ByteOffset, &Event, IoStatus ); if (!Irp) return STATUS_INSUFFICIENT_RESOURCES; | |
 
							


 
				
