RequestCompleted ルール (kmdf)

RequestCompleted 規則は、フィルター以外のドライバーの場合、要求が遅延または転送されない限り、または WdfRequestStopAcknowledge が呼び出された場合を除き、ドライバーの既定の I/O キューに提示される各要求を完了する必要があることを指定します。

次の場合を除き、キューコールバック関数のいずれかを介してドライバーの既定のキューに提示されるI/O要求は、I/O 要求コールバック関数から終了する前に完了していなければなりません。

  • 要求が遅延されました (たとえば、DPC または作業項目)。 この場合は、 DeferredRequestCompleted ルールを使用できます。

  • 要求が I/O ターゲットまたは別のキューに転送されました

  • 要求がフレームワークに配信されました (WdfDeviceEnqueueRequestを呼び出すことによって)

  • WdfRequestStopAcknowledge が呼び出されました

このルールは、ドライバーが次のコールバック関数から終了したときに検証されます。

I/O 要求プレゼンテーションの I/O キュー コールバック関数は 、 EvtIoDefaultEvtIoReadEvtIoWriteEvtIoDeviceControl、および EvtIoInternalDeviceControlです。

ドライバーモデル: KMDF

テスト方法

コンパイル時

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

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

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

適用対象

WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalIoctlOthersSynchronouslyWdfIoTargetSendInternalIoctlSynchronouslyWdfIoTargetSendIoctlSynchronouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableWdfRequestMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfWorkItemEnqueue