BufAfterReqCompletedIntIoctlA 規則 (kmdf)

BufAfterReqCompletedIntIoctlA 規則會確認要求完成之後,無法在 EvtIoInternalDeviceControl 回呼內 (存取其緩衝區) 。 呼叫 WdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetrieveUnsafeUserInputBufferWdfRequestRetrieveUnsafeUserOutputBuffer 來擷取緩衝區。

EvtIoInternalDeviceControl I/O 佇列事件回呼函式內, 呼叫 WdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetrieveUnsafeUserInputBufferWdfRequestRetrieveUnsafeUserOutputBuffer 所擷取的要求緩衝區,在 WdfRequestComplete 之後無法存取, WdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoost 已在要求上呼叫 方法。 下列可能的緩衝區存取函式會視為: RtlMoveMemory (緩衝區作為第 1 個和第 2 個參數) , RtlZeroMemoryRtlCompareMemoryZwReadFileZwWriteFileWDF_MEMORY_DESCRIPTOR_INIT_BUFFERWdfMemoryCreatePreallocatedWdfMemoryAssignBufferWdfMemoryCopyFromBufferWdfMemoryCopyToBuffer

驅動程式模型:KMDF

測試方法

在編譯時期

執行 靜態驅動程序驗證器 ,並指定 BufAfterReqCompletedIntIoctlA 規則。

使用下列步驟來執行程式碼的分析:
  1. 準備程式代碼 (使用角色類型宣告) 。
  2. 執行靜態驅動程式驗證程式。
  3. 檢視和分析結果。

如需詳細資訊,請參閱 使用靜態驅動程式驗證器在驅動程式中尋找瑕疵

適用於

WDF_MEMORY_DESCRIPTOR_INIT_BUFFERWdfMemoryAssignBufferWdfMemoryCopyFromBufferWdfMemoryCopyToBufferWdfMemoryCreatePreallocatedWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetrieveUnsafeUserInputBufferWdfRequestRetrieveUnsafeUserOutputBufferRtlCompareMemoryRtlMoveMemoryRtlZeroMemoryZwReadFile