RequestCompleted ルール (kmdf)
RequestCompleted 規則は、フィルター以外のドライバーの場合、要求が遅延または転送されない限り、または WdfRequestStopAcknowledge が呼び出された場合を除き、ドライバーの既定の I/O キューに提示される各要求を完了する必要があることを指定します。
次の場合を除き、キューコールバック関数のいずれかを介してドライバーの既定のキューに提示されるI/O要求は、I/O 要求コールバック関数から終了する前に完了していなければなりません。
要求が遅延されました (たとえば、DPC または作業項目)。 この場合は、 DeferredRequestCompleted ルールを使用できます。
要求が I/O ターゲットまたは別のキューに転送されました
要求がフレームワークに配信されました (WdfDeviceEnqueueRequestを呼び出すことによって)
WdfRequestStopAcknowledge が呼び出されました
このルールは、ドライバーが次のコールバック関数から終了したときに検証されます。
キューの EvtIoStop、 EvtCleanupCallback または EvtDestroyCallback
ファイル オブジェクトの EvtCleanupCallback または EvtDestroyCallback
デバイス用のEvtFileClose, EvtFileCleanup, EvtDeviceSelfManagedIoSuspend, EvtDeviceSelfManagedIoFlush, EvtDeviceSelfManagedIoCleanup, EvtDeviceShutdownNotification, EvtDeviceSurpriseRemoval, EvtCleanupCallback or EvtDestroyCallback
I/O 要求プレゼンテーションの I/O キュー コールバック関数は 、 EvtIoDefault、 EvtIoRead、 EvtIoWrite、 EvtIoDeviceControl、および EvtIoInternalDeviceControlです。
ドライバーモデル: KMDF
テスト方法
コンパイル時 |
---|
静的ドライバー検証ツール を実行し、 RequestCompleted 規則を指定します。 コードの分析を実行するには、次の手順に従います。詳細については、 「静的ドライバー検証ツールを使用してドライバー の欠陥を見つける」を参照してください。 |
適用対象
WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalIoctlOthersSynchronouslyWdfIoTargetSendInternalIoctlSynchronouslyWdfIoTargetSendIoctlSynchronouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableWdfRequestMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfWorkItemEnqueue