WdfRequestSendSyncAtDispatch rule (kmdf)
The WdfRequestSendSyncAtDispatch rule verifies that the WdfRequestSend function is sent at the correct IRQL priority level.
If the driver sets the WDF_REQUEST_SEND_OPTION_SYNCHRONOUS flag, it must call the WdfRequestSend function at IRQL = PASSIVE_LEVEL. If this flag is not set, the driver must call the WdfRequestSend function at IRQL = DISPATCH_LEVEL.
Note
This rule tests the same conditions as the WdfRequestSendSyncAtDispatch2 rule, but it uses a different harness to test different code paths.
Driver model: KMDF
How to test
At compile time |
---|
Run Static Driver Verifier and specify the WdfRequestSendSyncAtDispatch rule. Use the following steps to run an analysis of your code:
For more information, see Using Static Driver Verifier to Find Defects in Drivers. |
Applies to
WdfUsbInterfaceGetConfiguredPipe WdfUsbInterfaceGetConfiguredSettingIndex WdfUsbInterfaceGetDescriptor WdfUsbInterfaceGetEndpointInformation WdfUsbInterfaceGetInterfaceNumber WdfUsbInterfaceGetNumConfiguredPipes WdfUsbInterfaceGetNumEndpoints WdfUsbInterfaceGetNumSettings WdfUsbInterfaceSelectSetting WdfUsbTargetDeviceAllocAndQueryString WdfUsbTargetDeviceCreate WdfUsbTargetDeviceCyclePortSynchronously WdfUsbTargetDeviceFormatRequestForControlTransfer WdfUsbTargetDeviceFormatRequestForCyclePort WdfUsbTargetDeviceFormatRequestForString WdfUsbTargetDeviceFormatRequestForUrb WdfUsbTargetDeviceGetDeviceDescriptor WdfUsbTargetDeviceGetInterface WdfUsbTargetDeviceGetNumInterfaces WdfUsbTargetDeviceIsConnectedSynchronous WdfUsbTargetDeviceQueryString WdfUsbTargetDeviceResetPortSynchronously WdfUsbTargetDeviceRetrieveConfigDescriptor WdfUsbTargetDeviceRetrieveCurrentFrameNumber WdfUsbTargetDeviceRetrieveInformation WdfUsbTargetDeviceSelectConfig WdfUsbTargetDeviceSendControlTransferSynchronously WdfUsbTargetDeviceSendUrbSynchronously WdfUsbTargetDeviceWdmGetConfigurationHandle WdfUsbTargetPipeAbortSynchronously WdfUsbTargetPipeConfigContinuousReader WdfUsbTargetPipeFormatRequestForAbort WdfUsbTargetPipeFormatRequestForRead WdfUsbTargetPipeFormatRequestForReset WdfUsbTargetPipeFormatRequestForUrb WdfUsbTargetPipeFormatRequestForWrite WdfUsbTargetPipeGetInformation WdfUsbTargetPipeGetType WdfUsbTargetPipeIsInEndpoint WdfUsbTargetPipeIsOutEndpoint WdfUsbTargetPipeReadSynchronously WdfUsbTargetPipeResetSynchronously WdfUsbTargetPipeSendUrbSynchronously WdfUsbTargetPipeSetNoMaximumPacketSizeCheck WdfUsbTargetPipeWdmGetPipeHandle WdfUsbTargetPipeWriteSynchronously