WdfRequestSendSyncAtDispatchルール (kmdf)
WdfRequestSendSyncAtDispatch ルールは、WdfRequestSend 関数が正しい IRQL の優先度レベルで送信されるかを検証します。
ドライバーが WDF_REQUEST_Standard Edition ND_OPTION_SYNCHRONOUS フラグを設定する場合は、IRQL = PASSIVE_LEVEL で WdfRequestSend 関数を呼び出す必要があります。 このフラグが設定されていない場合、ドライバーは IRQL = DISPATCH_LEVEL で WdfRequestSend 関数を呼び出す必要があります。
Note
このルールは WdfRequestSendSyncAtDispatch2 ルールと同じ条件をテストしますが、別のハーネスを使用して異なるコード パスをテストします。
ドライバー モデル: KMDF
テスト方法
コンパイル時 |
---|
静的ドライバー検証ツール を実行し、 WdfRequestSendSyncAtDispatch 規則を指定します。 コードの分析を実行するには、次の手順に従います。詳細については、「静的ドライバー検証ツールを使用したドライバーの欠陥の検出」を参照してください。 |
適用対象
WdfUsbInterfaceGetConfiguredPipeWdfUsbInterfaceGetConfiguredSettingIndexWdfUsbInterfaceGetDescriptorWdfUsbInterfaceGetEndpointInformationWdfUsbInterfaceGetInterfaceNumberWdfUsbInterfaceGetNumConfiguredPipesWdfUsbInterfaceGetNumEndpointsWdfUsbInterfaceGetNumSettingsWdfUsbInterfaceSelectSettingWdfUsbTargetDeviceAllocAndQueryStringWdfUsbTargetDeviceCreateWdfUsbTargetDeviceCyclePortSynchronouslyWdfUsbTargetDeviceFormatRequestForControlTransferWdfUsbTargetDeviceFormatRequestForCyclePortWdfUsbTargetDeviceFormatRequestForStringWdfUsbTargetDeviceFormatRequestForUrbWdfUsbTargetDeviceGetDeviceDescriptorWdfUsbTargetDeviceGetInterfaceWdfUsbTargetDeviceGetNumInterfacesWdfUsbTargetDeviceIsConnectedSynchronousWdfUsbTargetDeviceQueryStringWdfUsbTargetDeviceResetPortSynchronouslyWdfUsbTargetDeviceRetrieveConfigDescriptorWdfUsbTargetDeviceRetrieveCurrentFrameNumberWdfUsbTargetDeviceRetrieveInformationWdfUsbTargetDeviceSelectConfigWdfUsbTargetDeviceSendControlTransferSynchronouslyWdfUsbTargetDeviceSendUrbSynchronouslyWdfUsbTargetDeviceWdmGetConfigurationHandleWdfUsbTargetPipeAbortSynchronouslyWdfUsbTargetPipeConfigContinuousReaderWdfUsbTargetPipeFormatRequestForAbortWdfUsbTargetPipeFormatRequestForReadWdfUsbTargetPipeFormatRequestForResetWdfUsbTargetPipeFormatRequestForUrbWdfUsbTargetPipeFormatRequestForWriteWdfUsbTargetPipeGetInformationWdfUsbTargetPipeGetTypeWdfUsbTargetPipeIsInEndpointWdfUsbTargetPipeIsOutEndpointWdfUsbTargetPipeReadSynchronouslyWdfUsbTargetPipeResetSynchronouslyWdfUsbTargetPipeSendUrbSynchronouslyWdfUsbTargetPipeSetNoMaximumPacketSizeCheckWdfUsbTargetPipeWdmGetPipeHandleWdfUsbTargetPipeWriteSynchronously