我目前正在编写一个较低的过滤器磁盘驱动程序,以捕获SCSI命令并评估每个命令的性能。当前,我的驱动程序能够捕获SCSI请求,并将其传递给下一个驱动程序。但是,当我尝试注册完成例程时,我得到以下状态:0xc0000010(STATUS_INVALID_DEVICE_REQUEST)。

没有完成例程的工作代码:

WDF_REQUEST_SEND_OPTIONS_INIT(&options, WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET);
WdfRequestSend(Request, Target, &options);

带有完成例程的失败代码:
WdfRequestFormatRequestUsingCurrentType(Request);
WdfRequestSetCompletionRoutine(Request, CompletionRoutine, CompletionContext);
WdfRequestSend(Request, Target, WDF_NO_SEND_OPTIONS);

任何帮助,将不胜感激。谢谢。

笔记:
  • WdfRequestSend()是失败的例程。
  • 带有完成例程的代码适用于上层过滤器磁盘驱动程序。
  • 最佳答案

    根据对NTDEV的讨论,结果表明,如果CompletionRoutineNULL,则必须使用WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET选项。

    关于windows - 如何为内部设备控制请求正确注册完成例程,以获取较低版本的过滤器磁盘驱动器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30928758/

    10-13 06:05