次の方法で共有


BufAfterReqCompletedIntIoctlA ルール (kmdf)

BufAfterReqCompletedIntIoctlA ルールは、要求が完了した後、そのバッファーにはアクセスできないことを検証します (EvtIoInternalDeviceControl コールバック内のみ)。 バッファーは、WdfRequestRetrieveInputBuffer または WdfRequestRetrieveOutputBuffer または WdfRequestRetrieveUnsafeUserInputBuffer または WdfRequestRetrieveUnsafeUserOutputBuffer を呼び出すことによって取得されました。

EvtIoInternalDeviceControl I/O キュー イベント コールバック関数内では、WdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetrieveUnsafeUserInputBuffer または WdfRequestRetrieveUnsafeUserOutputBuffer を呼び出して取得した要求バッファーは、WdfRequestComplete の後にアクセスできません。WdfRequestCompleteWithInformation または WdfRequestCompleteWithPriorityBoost メソッドが要求で呼び出されました。 次の可能なバッファー アクセス関数が考えられます。RtlMoveMemory (バッファーを 1 番目および 2 番目のパラメーターとして使用)、RtlZeroMemoryRtlCompareMemoryZwReadFileZwWriteFileWDF_MEMORY_DESCRIPTOR_INIT_BUFFERWdfMemoryCreatePreallocatedWdfMemoryAssignBufferWdfMemoryCopyFromBufferWdfMemoryCopyToBuffer

ドライバーモデル: KMDF

テスト方法

コンパイル時

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

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

詳細については、 「静的ドライバー検証ツールを使用してドライバー の欠陥を見つける」を参照してください。

適用対象

WDF_MEMORY_DESCRIPTOR_INIT_BUFFERWdfMemoryAssignBufferWdfMemoryCopyFromBufferWdfMemoryCopyToBufferWdfMemoryCreatePreallocatedWdfRequestCompleteWdfRequestCompleteWithInformatioWdfRequestCompleteWithPriorityBoosWdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetrieveUnsafeUserInputBufferWdfRequestRetrieveUnsafeUserOutputBufferRtlCompareMemoryRtlMoveMemoryRtlZeroMemoryZwReadFile