阅读:1021回复:1
请哪位高手解释一下“事件”?
比如下面是《Windows WDM 设备驱动程序开发指南》中的一个例程中的一个函数,PnpStartDevice函数中调用此函数:
NTSTATUS ForwardIrpAndWait( IN PDEVICE_OBJECT fdo, IN PIRP Irp) { DebugPrintMsg(\"ForwardIrpAndWait\"); PWDM2_DEVICE_EXTENSION dx=(PWDM2_DEVICE_EXTENSION)fdo->DeviceExtension; KEVENT event; KeInitializeEvent( &event, NotificationEvent, FALSE); IoCopyCurrentIrpStackLocationToNext(Irp); IoSetCompletionRoutine( Irp, (PIO_COMPLETION_ROUTINE)ForwardedIrpCompletionRoutine, (PVOID)&event, TRUE, TRUE, TRUE); NTSTATUS status = IoCallDriver( dx->NextStackDevice, Irp); if( status==STATUS_PENDING) { DebugPrintMsg(\"ForwardIrpAndWait: waiting for completion\"); KeWaitForSingleObject( &event, Executive, KernelMode, FALSE, NULL); status = Irp->IoStatus.Status; } #if DBG if( status!=STATUS_SUCCESS) DebugPrint(\"ForwardIrpAndWait: completed %x\",status); #endif return status; } NTSTATUS ForwardedIrpCompletionRoutine( IN PDEVICE_OBJECT fdo, IN PIRP Irp, IN PKEVENT ev) { KeSetEvent( ev, 0, FALSE); return STATUS_MORE_PROCESSING_REQUIRED; } 我有一些问题: 1。什么是事件?事件和函数有没有关系?如果有是什么关系? 2。什么是信号态?是不是信号态就是执行,非信号态就是挂起? 3。上例中程序中定义了event,初始化了event,又用KeSetEvent把它转入信号态,但我还是不明事件event到底是什么意思?它的作用是什么?应该如何理解这个event? |
|
沙发#
发布于:2003-10-09 12:12
看看windows编程吧
|
|
|