Função WdfRequestRetrieveUnsafeUserOutputBuffer (wdfrequest.h)
[Aplica-se somente ao KMDF]
O método WdfRequestRetrieveUnsafeUserOutputBuffer recupera o buffer de saída de uma solicitação de E/S, se a técnica da solicitação para acessar buffers de dados não for armazenada em buffer nem E/S direta.
Sintaxe
NTSTATUS WdfRequestRetrieveUnsafeUserOutputBuffer(
[in] WDFREQUEST Request,
[in] size_t MinimumRequiredLength,
[out] PVOID *OutputBuffer,
[out, optional] size_t *Length
);
Parâmetros
[in] Request
Um identificador para um objeto de solicitação de estrutura.
[in] MinimumRequiredLength
O tamanho mínimo do buffer, em bytes, que o driver precisa para processar a solicitação de E/S.
[out] OutputBuffer
Um ponteiro para um local que recebe o endereço do buffer.
[out, optional] Length
Um ponteiro para um local que recebe o tamanho do buffer, em bytes. Esse parâmetro é opcional e pode ser NULL.
Retornar valor
WdfRequestRetrieveUnsafeUserOutputBuffer retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
Um parâmetro de entrada é inválido. |
|
Esse valor será retornado se ocorrer um dos seguintes procedimentos:
|
|
O parâmetro MinimumRequiredLength especifica um tamanho de buffer maior que o tamanho real do buffer. |
Esse método também pode retornar outros valores NTSTATUS.
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
O método WdfRequestRetrieveUnsafeUserOutputBuffer deve ser chamado de uma função de retorno de chamada EvtIoInCallerContext . Depois de chamar WdfRequestRetrieveUnsafeUserOutputBuffer, o driver deve chamar WdfRequestProbeAndLockUserBufferForWrite.
O driver poderá chamar WdfRequestRetrieveUnsafeUserOutputBuffer se o código de controle de E/S de uma solicitação for IRP_MJ_READ ou IRP_MJ_DEVICE_CONTROL.
O driver pode acessar o buffer recuperado até concluir a solicitação de E/S que o parâmetro Request representa.
Para obter mais informações sobre WdfRequestRetrieveUnsafeUserOutputBuffer, consulte Acessando buffers de dados em drivers de Framework-Based.
Exemplos
Para obter um exemplo de código que usa WdfRequestRetrieveUnsafeUserOutputBuffer, consulte WdfRequestProbeAndLockUserBufferForRead.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Cabeçalho | wdfrequest.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.) |
IRQL | PASSIVE_LEVEL |
Regras de conformidade da DDI | BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWrite(kmdf), DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), OutputBufferAPI(kmdf) |