BufAfterReqCompletedIntIoctl rule (kmdf)

The BufAfterReqCompletedIntIoctl rule specifies that after a request is completed, its buffer cannot be accessed (inside EvtIoInternalDeviceControl callback function only). The buffer is retrieved by calling WdfRequestRetrieveOutputBuffer or WdfRequestRetrieveUnsafeUserOutputBuffer or WdfRequestRetrieveInputBuffer or WdfRequestRetrieveUnsafeUserInputBuffer.

Within the EvtIoInternalDeviceControl I/O queue event callback function, the request buffer retrieved by calling WdfRequestRetrieveInputBuffer, WdfRequestRetrieveOutputBuffer, WdfRequestRetrieveUnsafeUserInputBuffer, or WdfRequestRetrieveUnsafeUserOutputBuffer cannot be accessed after the request is completed. The request is completed by calling WdfRequestComplete, WdfRequestCompleteWithInformation, or WdfRequestComplete, WdfRequestCompleteWithPriorityBoost. The following possible buffer access functions are considered: WdfRequestRetrieveOutputBuffer, WdfRequestRetrieveUnsafeUserOutputBuffer, WdfRequestRetrieveInputBuffer and WdfRequestRetrieveUnsafeUserInputBuffer.

Driver model: KMDF

How to test

At compile time

Run Static Driver Verifier and specify the BufAfterReqCompletedIntIoctl 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

WdfRequestComplete WdfRequestCompleteWithInformation WdfRequestCompleteWithPriorityBoost WdfRequestRetrieveInputBuffer WdfRequestRetrieveOutputBuffer WdfRequestRetrieveUnsafeUserInputBuffer WdfRequestRetrieveUnsafeUserOutputBuffer