Reusing Framework Request Objects in UMDF
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.
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.