Reutilización de objetos de solicitud de marco
Para mejorar el rendimiento, los controladores basados en marcos que crean y envían muchas solicitudes asincrónicas casi idénticas a un destino de E/S pueden reutilizar objetos de solicitud en lugar de crear un nuevo objeto de solicitud para cada solicitud. Un controlador puede reutilizar un objeto de solicitud una vez completada la solicitud.
Si un controlador ha creado un objeto de solicitud llamando a WdfRequestCreate o WdfRequestCreateFromIrp, puede reutilizar la solicitud llamando a WdfRequestReuse. Un controlador también puede reutilizar los objetos de solicitud que ha recibido del marco en sus colas de E/S, pero no puede cambiar el IRP que contiene el objeto de solicitud recibido.
Si tiene cuidado de evitar situaciones que provocan los valores devueltos incorrectos descritos en WdfRequestReuse, el controlador puede llamar a WdfRequestReuse desde una función de devolución de llamada CompletionRoutine . (La función de devolución de llamada CompletionRoutine tiene un valor devuelto VOID y, por tanto, no puede notificar errores).
Si el controlador proporciona una función de devolución de llamada CompletionRoutine para un objeto de solicitud que reutiliza, el controlador debe llamar a WdfRequestSetCompletionRoutine después de llamar a WdfRequestReuse.