Función WdfRequestReuse (wdfrequest.h)
[Se aplica a KMDF y UMDF]
El método WdfRequestReuse reinicializa un objeto de solicitud de marco para que se pueda reutilizar.
Sintaxis
NTSTATUS WdfRequestReuse(
[in] WDFREQUEST Request,
[in] PWDF_REQUEST_REUSE_PARAMS ReuseParams
);
Parámetros
[in] Request
Identificador de un objeto de solicitud de marco.
[in] ReuseParams
Puntero a una estructura de WDF_REQUEST_REUSE_PARAMS asignada por el autor de la llamada.
Valor devuelto
WdfRequestReuse devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
|
Un parámetro de entrada no es válido. |
|
El controlador proporcionó un IRP en la estructura WDF_REQUEST_REUSE_PARAMS , pero el objeto de solicitud especificado no se obtuvo de WdfRequestCreateFromIrp. |
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Comentarios
Un controlador basado en marcos puede reutilizar objetos de solicitud de marco creados por llamadas anteriores a WdfRequestCreate o WdfRequestCreateFromIrp. Los controladores también pueden reutilizar los objetos de solicitud que han recibido del marco, pero no pueden establecer la marca WDF_REQUEST_REUSE_SET_NEW_IRP para esos objetos de solicitud.
Nota
Los controladores deben tener precaución al reutilizar los objetos de solicitud recibidos del marco. La reutilización de esta solicitud restablece la marca de cancelación del IRP subyacente y puede impedir que un controlador de llamada cancele la solicitud.
Un controlador puede reutilizar un objeto de solicitud una vez completada la solicitud original. Una vez que un controlador ha llamado a WdfRequestReuse, el contenido de la solicitud debe reinicializarse. El controlador puede especificar algunos parámetros de solicitud en la estructura WDF_REQUEST_REUSE_PARAMS .
Si desea que la solicitud reutilizada tenga una función de devolución de llamada CompletionRoutine , el controlador debe llamar a WdfRequestSetCompletionRoutine después de llamar a WdfRequestReuse.
Para obtener más información sobre WdfRequestReuse, consulte Reutilización de objetos de solicitud de marco.
Ejemplos
El ejemplo de código siguiente forma parte de una función de devolución de llamada CompletionRoutine que llama a WdfRequestReuse para que el controlador pueda reutilizar una solicitud asignada por el controlador.
VOID
MyRequestCompletionRoutine(
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
PWDF_REQUEST_COMPLETION_PARAMS CompletionParams,
IN WDFCONTEXT Context
)
{
WDF_REQUEST_REUSE_PARAMS params;
NTSTATUS status;
...
WDF_REQUEST_REUSE_PARAMS_INIT(
¶ms,
WDF_REQUEST_REUSE_NO_FLAGS,
STATUS_SUCCESS
);
status = WdfRequestReuse(
Request,
¶ms
);
ASSERT(NT_SUCCESS(status));
...
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfrequest.h (incluya Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ReqSendFail(kmdf) |