阅读:1591回复:7
请问IoCompletionRoutine应该返回什么值?
请问IoCompletionRoutine应该返回什么值?
我不是自己的创建的IRP. 应该返回STATUS_SUCCESS还是Irp->IoStatus.Status? |
|
最新喜欢:amei
|
沙发#
发布于:2002-07-18 10:22
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2002-07-18 10:29
IoCallDriver( dx->NextStackDevice, Irp);调用地层驱动或者直接返回处理后的status
|
|
|
地板#
发布于:2002-07-18 14:18
大家可能都误解了我的意思。
我的问题如下: //IRP_MJ_READ NTSTATUS Read() { IoCopyCurrentIrpStackLocationToNext(Irp), IoSetCompletionRoutine(CompletionRoutine, Event...); Status = IoCallDriver(fdo, Irp); if (Status == STATUS_PENDING){ KeWaitForSingleObject(Event, ...); } } NTSTATUS CompletionRoutine(fdo, irp,Event) { KeSetEvent(Event,...); return ???? ---(1) } 其中(1)处的返回值应该为什么?对Irp的处理有什么影响? |
|
|
地下室#
发布于:2002-07-18 15:50
完成例程一般返回STATUS_MORE_PROCESSING_REQUIRED
|
|
|
5楼#
发布于:2002-07-19 09:05
我的理解是:应该是自己建立的Irp才需要在完成例程中返回STATUS_MORE_PROCESSING_REQUIRED,用来阻止Io管理器释放Irp的内存。
其它的情况下返回什么值? |
|
|
6楼#
发布于:2002-07-19 09:49
其他情况:
STATUS_SUCCESS |
|
|
7楼#
发布于:2002-07-22 10:14
可以截贴啦。
|
|
|