Função WdfRequestRetrieveUnsafeUserInputBuffer (wdfrequest.h)
[Aplica-se somente ao KMDF]
O método WdfRequestRetrieveUnsafeUserInputBuffer recupera o buffer de entrada 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 WdfRequestRetrieveUnsafeUserInputBuffer(
[in] WDFREQUEST Request,
[in] size_t MinimumRequiredLength,
[out] PVOID *InputBuffer,
[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] InputBuffer
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
WdfRequestRetrieveUnsafeUserInputBuffer retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método poderá 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 destes 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 WdfRequestRetrieveUnsafeUserInputBuffer deve ser chamado de uma função de retorno de chamada EvtIoInCallerContext . Depois de chamar WdfRequestRetrieveUnsafeUserInputBuffer, o driver deve chamar WdfRequestProbeAndLockUserBufferForRead.
O driver pode chamar WdfRequestRetrieveUnsafeUserInputBuffer se o código de controle de E/S de uma solicitação for IRP_MJ_WRITE 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 WdfRequestRetrieveUnsafeUserInputBuffer, consulte Acessando buffers de dados em drivers de Framework-Based.
Exemplos
Para obter um exemplo de código que usa WdfRequestRetrieveUnsafeUserInputBuffer, 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 de DDI | BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedWrite(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), InputBufferAPI(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |