MdlAfterReqCompletedReadA

MdlAfterReqCompletedReadA Rule (KMDF)

MdlAfterReqCompletedReadA ルールは、EvtIoRead コールバック関数内で、I/O 要求が完了した後に、取得されたメモリ記述子リスト (MDL) オブジェクトにアクセスできないことを規定します。

ドライバーの EvtIoRead コールバック関数内で、WdfRequestRetrieveOutputWdmMdl メソッドの呼び出しによって取得された要求バッファーは、I/O 要求で WdfRequestCompleteWdfRequestCompleteWithInformation、または WdfRequestCompleteWithPriorityBoost を呼び出した後にはアクセスできません。

このルールは、次の関数を考慮します。

WDF_MEMORY_DESCRIPTOR_INIT_MDL

MmGetMdlByteCount

MmGetSystemAddressForMdlSafe

MmGetMdlVirtualAddress

IoBuildPartialMdl (1 番目と 2 番目のパラメーター)

KeFlushIoBuffers

MmGetMdlPfnArray

MmGetMdlByteOffset

MmPrepareMdlForReuse

WdfDmaTransactionInitialize

ドライバー モデルKMDF

テスト方法

コンパイル時

静的ドライバー検証ツール を実行し、MdlAfterReqCompletedReadA 規則を指定します。

コードの分析を実行するには、次の手順に従います。
  1. コードを準備します (役割の種類の宣言を使います)。
  2. 静的ドライバー検証ツールを実行します。
  3. 結果を表示して分析します。

詳しくは、「ドライバーの不具合を見つけるための静的ドライバー検証ツールの使用」をご覧ください。

適用対象

WDF_MEMORY_DESCRIPTOR_INIT_MDL
WdfDmaTransactionInitialize
WdfRequestComplete
WdfRequestCompleteWithInformation
WdfRequestCompleteWithPriorityBoost
WdfRequestRetrieveOutputWdmMdl
IoBuildPartialMdl
KeFlushIoBuffers
MmGetMdlByteCount
MmGetMdlByteOffset
MmGetMdlPfnArray
MmGetMdlVirtualAddress
MmGetSystemAddressForMdlSafe
MmPrepareMdlForReuse

 

 

表示:
© 2016 Microsoft