Compartir a través de


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

[Solo se aplica a KMDF]

La de un controlador EvtIoAllocateResourcesForReservedRequest función de devolución de llamada 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 asigna 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 EvtIoAllocateResourcesForReservedRe quest debe devolver STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(estado) es igual a 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(estado) es igual a FALSE.

Observaciones

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

Si el controlador registra un EvtIoAllocateResourcesForReservedRequest función de devolución de llamada, 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 memoria baja.

Para asignar memoria para recursos específicos de la solicitud, una EvtIoAllocateResourcesForReservedRequest función de devolución de llamada podría llamar a WdfObjectAllocateContext, especificando el identificador de 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 objetos 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 reservada. 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 un EvtCleanupCallback o EvtDestroyCallback función de devolución de llamada 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 Framework Object Context Space.

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 EvtIoAllocateResourcesForReservedRequest función de devolución de llamada, consulte Garantizar el progreso hacia delante de las operaciones de E/S.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.9
encabezado wdfio.h (incluya Wdf.h)
irQL <=DISPATCH_LEVEL

Consulte también

EvtIoAllocateRequestResources

WdfIoQueueAssignForwardProgressPolicy

WdfRequestIsReserved