2015-06-19 61 views
2

我目前正在編寫一個較低的篩選器磁盤驅動程序來捕獲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); 

任何幫助,將不勝感激。謝謝。

NOTES:

  • WdfRequestSend()是發生故障的程序。
  • 帶有完成例程的代碼適用於上級過濾器磁盤驅動程序。

回答

1

按照這個討論NTDEV,事實證明,如果CompletionRoutineNULL,你必須使用WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET選項。

相關問題