DrvAckIoStop rule (kmdf)

The DrvAckIoStop rule verifies that the driver is aware of pending requests while its power-managed queue is getting powered-down and the driver acknowledges, completes, or cancels the pending requests accordingly. In the case of self-managed I/O requests, the driver should also correctly handle these requests from its EvtDeviceSelfManagedIoSuspend function. A driver that fails to handle these requests during a power-down would cause Bug Check 0x9F: DRIVER_POWER_STATE_FAILURE.

In some circumstances it might be appropriate to suppress this warning. If the driver does not hold on to the requests, or does not forward them to other drivers, and if the driver completes the requests directly in the queue's handlers, you can use the __analysis_assume function to suppress the warning. For more information, see Using the _analysis_assume Function to Suppress False Defects and How to: Specify Additional Code Information by Using __analysis_assume.

Driver model: KMDF

Bug check(s) found with this rule: Bug Check 0x9F: DRIVER_POWER_STATE_FAILURE

How to test

At compile time

Run Static Driver Verifier and specify the DrvAckIoStop rule.

Use the following steps to run an analysis of your code:
  1. Prepare your code (use role type declarations).
  2. Run Static Driver Verifier.
  3. View and analyze the results.

For more information, see Using Static Driver Verifier to Find Defects in Drivers.

Applies to

WdfDeviceInitSetPnpPowerEventCallbacks WdfFdoInitSetFilter WdfIoQueueCreate