Reusing Framework Request Objects in UMDF

Warning

UMDF 2 is the latest version of UMDF and supersedes UMDF 1. All new UMDF drivers should be written using UMDF 2. No new features are being added to UMDF 1 and there is limited support for UMDF 1 on newer versions of Windows 10. Universal Windows drivers must use UMDF 2.

The archived UMDF 1 samples can be found in the Windows 11, version 22H2 - May 2022 Driver Samples Update.

For more info, see Getting Started with UMDF.

To improve driver performance, framework-based drivers that create and send many nearly identical asynchronous requests to an I/O target can reuse request objects instead of creating a new request object for each request. A driver can reuse a request object after the request has been completed.

If a driver has created a request object by calling IWDFDevice::CreateRequest, it can reuse the request by calling IWDFIoRequest2::Reuse. A driver can also reuse request objects that it has received from the framework in its I/O queues.

If your driver provides an IRequestCallbackRequestCompletion::OnCompletion callback function for a request object that it reuses, the driver must call IWDFIoRequest::SetCompletionCallback after it calls Reuse.