EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST función de devolución de llamada (wdfio.h)

[Solo se aplica a KMDF]

La función de devolución de llamada EvtIoAllocateResourcesForReservedRequest de un controlador asigna recursos específicos de la solicitud que el controlador puede usar para procesar una solicitud de E/S en el futuro. El marco de trabajo está asignando previamente el objeto de solicitud especificado para su uso futuro en situaciones de poca memoria.

Sintaxis

EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST EvtWdfIoAllocateResourcesForReservedRequest;

NTSTATUS EvtWdfIoAllocateResourcesForReservedRequest(
  [in] WDFQUEUE Queue,
  [in] WDFREQUEST Request
)
{...}

Parámetros

[in] Queue

Identificador de un objeto de cola de E/S.

[in] Request

Identificador de un objeto de solicitud que el marco ha creado para su uso durante situaciones futuras de poca memoria.

Valor devuelto

La función de devolución de llamada EvtIoAllocateResourcesForReservedRequest debe devolver STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(status) sea TRUE si la función no encuentra ningún error. De lo contrario, esta función debe devolver un valor de estado para el que NT_SUCCESS(status) es igual a FALSE.

Comentarios

Un controlador puede registrar una función de devolución de llamada EvtIoAllocateResourcesForReservedRequest cuando llama a WdfIoQueueAssignForwardProgressPolicy.

Si el controlador registra una función de devolución de llamada EvtIoAllocateResourcesForReservedRequest , el marco llama a la función inmediatamente después de crear un objeto de solicitud que se reserva para situaciones de poca memoria.

La función de devolución de llamada puede asignar recursos que el controlador necesitará para procesar una solicitud más adelante, si el marco usa la solicitud reservada debido a una situación de poca memoria.

Para asignar memoria para recursos específicos de la solicitud, una función de devolución de llamada EvtIoAllocateResourcesForReservedRequest podría llamar a WdfObjectAllocateContext, especificando el identificador del objeto de solicitud que especifica el parámetro Request .

Como alternativa o además, el controlador puede llamar a WdfDeviceInitSetRequestAttributes antes de llamar a WdfDeviceCreate. Como resultado, el marco asignará espacio de contexto para cada objeto de solicitud reservado cuando cree el objeto .

Si el controlador asigna espacio de contexto de objeto para objetos de solicitud reservados, el controlador debe reinicializar el espacio de contexto cuando complete una solicitud de E/S que use un objeto de solicitud reservado. El marco no reinicializa el espacio de contexto de los objetos de solicitud reservados después de su uso.

Si el controlador llama a WdfDeviceInitSetRequestAttributes y especifica una función de devolución de llamada EvtCleanupCallback o EvtDestroyCallback para sus objetos de solicitud, el marco llama a estas funciones de devolución de llamada para sus objetos de solicitud reservados solo cuando elimina las colas de E/S asociadas.

Los controladores de solicitudes del controlador pueden llamar a WdfRequestIsReserved para determinar si se usan objetos de solicitud reservados.

Para obtener más información sobre cómo usar el espacio de contexto de objetos, vea Espacio de contexto de objetos de marco.

Si la función de devolución de llamada asigna correctamente recursos, debe devolver STATUS_SUCCESS.

Si se produce un error de asignación de recursos, como una situación de memoria baja, la función de devolución de llamada debe devolver un valor de estado de error. En este caso, el marco deja de asignar objetos de solicitud reservados y usa el valor devuelto de la función de devolución de llamada como valor devuelto para WdfIoQueueAssignForwardProgressPolicy.

Para obtener más información sobre la función de devolución de llamada EvtIoAllocateResourcesForReservedRequest , vea Garantizar el progreso hacia delante de las operaciones de E/S.

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1,9
Encabezado wdfio.h (incluir Wdf.h)
IRQL <=DISPATCH_LEVEL

Consulte también

EvtIoAllocateRequestResources

WdfIoQueueAssignForwardProgressPolicy

WdfRequestIsReserved