Método IWDFIoRequest2::RetrieveInputBuffer (wudfddi.h)
[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]
O método RequestRetrieveInputBuffer recupera o buffer de entrada de uma solicitação de E/S.
Sintaxe
HRESULT RetrieveInputBuffer(
[in] SIZE_T MinimumRequiredCb,
[out] PVOID *Buffer,
[out, optional] SIZE_T *BufferCb
);
Parâmetros
[in] MinimumRequiredCb
O tamanho mínimo do buffer, em bytes, que o driver precisa para processar a solicitação de E/S. Esse valor poderá ser zero se não houver tamanho mínimo do buffer.
[out] Buffer
Um ponteiro para um local que recebe o endereço do buffer.
[out, optional] BufferCb
Um ponteiro para um local que recebe o tamanho do buffer, em bytes. Esse parâmetro é opcional e pode ser NULL.
Retornar valor
RequestRetrieveInputBuffer retornará S_OK se a operação for bem-sucedida. Caso contrário, esse método pode retornar o seguinte valor:
Código de retorno | Descrição |
---|---|
|
A solicitação de E/S não forneceu um buffer de entrada ou o tamanho do buffer de entrada é menor que o tamanho mínimo especificado por MinimumRequiredCb . |
|
Não há memória suficiente disponível para recuperar o buffer. O driver deve concluir a solicitação com um erro status valor. |
Esse método pode retornar um dos outros valores que Winerror.h contém.
Comentários
O buffer de entrada de uma solicitação contém informações, como dados a serem gravados em um disco, que o originador da solicitação forneceu. Seu driver pode chamar RequestRetrieveInputBuffer para obter o buffer de entrada para uma solicitação de gravação ou uma solicitação de controle de E/S do dispositivo, mas não para uma solicitação de leitura (porque as solicitações de leitura não fornecem dados de entrada).
O método RequestRetrieveInputBuffer recupera o buffer de entrada para solicitações de E/S que usam a E/S em buffer ou o método de E/S direto para acessar buffers de dados.
Se RequestRetrieveInputBuffer retornar S_OK, o driver receberá o endereço e, opcionalmente, o tamanho do buffer de entrada.
O driver pode acessar o buffer recuperado até concluir a solicitação de E/S.
Em vez de chamar RequestRetrieveInputBuffer, o driver pode chamar IWDFIoRequest2::RetrieveInputMemory, que cria um objeto de memória de estrutura que representa o buffer.
Para obter mais informações sobre como acessar os buffers de dados de uma solicitação de E/S, consulte Acessando buffers de dados em drivers de UMDF-Based.
Exemplos
O exemplo de código a seguir mostra um segmento da função de retorno de chamada IQueueCallbackDeviceIoControl::OnDeviceIoControl de um driver de porta serial. No buffer de entrada de uma solicitação de E/S, o segmento de código obtém a taxa de baud que deve ser definida para o dispositivo.
VOID
STDMETHODCALLTYPE
CMyQueue::OnDeviceIoControl(
__in IWDFIoQueue* FxQueue,
__in IWDFIoRequest* FxRequest,
__in ULONG ControlCode,
__in SIZE_T InputBufferCb,
__in SIZE_T OutputBufferCb
)
{
PBYTE buffer;
SIZE_T bufferSize;
HRESULT hr;
//
// Declare an IWDFIoRequest2 interface pointer and obtain the
// IWDFIoRequest2 interface from the IWDFIoRequest interface.
//
CComQIPtr<IWDFIoRequest2> r2 = FxRequest;
switch (ControlCode)
{
case IOCTL_SERIAL_SET_BAUD_RATE:
{
//
// Obtain the baud rate from the write request's input buffer.
//
hr = r2->RetrieveInputBuffer(sizeof(SERIAL_BAUD_RATE),
(PVOID*) &buffer,
&bufferSize);
...
}
}
}
Requisitos
Requisito | Valor |
---|---|
Fim do suporte | Indisponível no UMDF 2.0 e posterior. |
Plataforma de Destino | Área de Trabalho |
Versão mínima do UMDF | 1,9 |
Cabeçalho | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |
Confira também
IWDFIoRequest2::RetrieveInputMemory
IWDFIoRequest2::RetrieveOutputBuffer