EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST função de retorno de chamada (wdfio.h)
[Aplica-se somente ao KMDF]
A função de retorno de chamada EvtIoAllocateResourcesForReservedRequest de um driver aloca recursos específicos de solicitação que o driver pode usar para processar uma solicitação de E/S no futuro. A estrutura está pré-alocando o objeto de solicitação especificado para uso futuro em situações de memória baixa.
Sintaxe
EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST EvtWdfIoAllocateResourcesForReservedRequest;
NTSTATUS EvtWdfIoAllocateResourcesForReservedRequest(
[in] WDFQUEUE Queue,
[in] WDFREQUEST Request
)
{...}
Parâmetros
[in] Queue
Um identificador para um objeto de fila de E/S.
[in] Request
Um identificador para um objeto de solicitação que a estrutura criou para uso durante futuras situações de baixa memória.
Retornar valor
A função de retorno de chamada EvtIoAllocateResourcesForReservedRequest deve retornar STATUS_SUCCESS ou outro valor status para o qual NT_SUCCESS(status) é igual a TRUE se a função não encontrar erros. Caso contrário, essa função deve retornar um valor status para o qual NT_SUCCESS(status) é igual a FALSE.
Comentários
Um driver pode registrar uma função de retorno de chamada EvtIoAllocateResourcesForReservedRequest quando chama WdfIoQueueAssignForwardProgressPolicy.
Se o driver registrar uma função de retorno de chamada EvtIoAllocateResourcesForReservedRequest , a estrutura chamará a função imediatamente após criar um objeto de solicitação que ele reserva para situações de baixa memória.
A função de retorno de chamada pode alocar recursos que seu driver exigirá para processar uma solicitação posteriormente, se a estrutura usar a solicitação reservada devido a uma situação de baixa memória.
Para alocar memória para recursos específicos da solicitação, uma função de retorno de chamada EvtIoAllocateResourcesForReservedRequest pode chamar WdfObjectAllocateContext, especificando o identificador de objeto de solicitação especificado pelo parâmetro Request .
Como alternativa ou adicional, seu driver pode chamar WdfDeviceInitSetRequestAttributes antes de chamar WdfDeviceCreate. Como resultado, a estrutura alocará espaço de contexto para cada objeto de solicitação reservada quando criar o objeto.
Se o driver alocar espaço de contexto de objeto para objetos de solicitação reservados, o driver deverá reinicializar o espaço de contexto quando concluir uma solicitação de E/S que usa um objeto de solicitação reservado. A estrutura não reinicializa o espaço de contexto de objetos de solicitação reservados após o uso.
Se o driver chamar WdfDeviceInitSetRequestAttributes e especificar uma função de retorno de chamada EvtCleanupCallback ou EvtDestroyCallback para seus objetos de solicitação, a estrutura chamará essas funções de retorno de chamada para seus objetos de solicitação reservada somente quando excluir as filas de E/S associadas.
Os manipuladores de solicitação do driver podem chamar WdfRequestIsReserved para determinar se objetos de solicitação reservados estão sendo usados.
Para obter mais informações sobre como usar o espaço de contexto do objeto, consulte Espaço de Contexto do Objeto framework.
Se a função de retorno de chamada alocar recursos com êxito, ela deverá retornar STATUS_SUCCESS.
Se ocorrer um erro de alocação de recurso, como uma situação de memória baixa, a função de retorno de chamada deverá retornar um erro status valor. Nesse caso, a estrutura para de alocar objetos de solicitação reservada e usa o valor retornado da função de retorno de chamada como o valor retornado para WdfIoQueueAssignForwardProgressPolicy.
Para obter mais informações sobre a função de retorno de chamada EvtIoAllocateResourcesForReservedRequest , consulte Garantindo o progresso das operações de E/S.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1,9 |
Cabeçalho | wdfio.h (inclua Wdf.h) |
IRQL | <=DISPATCH_LEVEL |