我目前正在编写一个较低的过滤器磁盘驱动程序,以捕获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);
任何帮助,将不胜感激。谢谢。
笔记:
最佳答案
根据对NTDEV的讨论,结果表明,如果CompletionRoutine
是NULL
,则必须使用WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET
选项。
关于windows - 如何为内部设备控制请求正确注册完成例程,以获取较低版本的过滤器磁盘驱动器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30928758/