阅读:1472回复:1
请问tooflat提供的透明加密代码中的SfForwardIrpSyncronously函数的作用?
请教各位:
从字面上看,这个函数是IRP同步的作用, 代码就是下发IRP,然后等待完成函数的KeSetEvent后继续执行,请问这个函数用在SfCreate、SfCleanup等函数中有什么用?? 谢谢! NTSTATUS SfForwardIrpSyncronouslyCompletion ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context ) { PKEVENT Event = Context; UNREFERENCED_PARAMETER(DeviceObject); ASSERT(IS_MY_DEVICE_OBJECT(DeviceObject)); if (Irp->PendingReturned) { KeSetEvent(Event, IO_NO_INCREMENT, FALSE); } return STATUS_MORE_PROCESSING_REQUIRED; } NTSTATUS SfForwardIrpSyncronously( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) { KEVENT Event; NTSTATUS Status; KeInitializeEvent(&Event, NotificationEvent, FALSE); IoCopyCurrentIrpStackLocationToNext(Irp); IoSetCompletionRoutine(Irp, SfForwardIrpSyncronouslyCompletion, &Event, TRUE, TRUE, TRUE); Status = IoCallDriver(DeviceObject, Irp); if (STATUS_PENDING == Status) { KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); Status = Irp->IoStatus.Status; } return Status; |
|
沙发#
发布于:2009-03-12 10:15
自己顶一个
|
|