Método IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion (wudfusb.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. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]
A função de retorno de chamada de evento OnReaderCompletion de um driver informa ao driver que um leitor contínuo concluiu com êxito uma solicitação de leitura.
Sintaxe
void OnReaderCompletion(
[in] IWDFUsbTargetPipe *pPipe,
[in] IWDFMemory *pMemory,
[in] SIZE_T NumBytesTransferred,
[in] PVOID Context
);
Parâmetros
[in] pPipe
Um ponteiro para a interface IWDFUsbTargetPipe para o pipe USB no qual o driver habilitou um leitor contínuo.
[in] pMemory
Um ponteiro para a interface IWDFMemory para um buffer de leitura que contém dados que foram lidos do pipe USB.
[in] NumBytesTransferred
O número de bytes que o buffer de leitura contém.
[in] Context
Um ponteiro para informações de contexto fornecidas pelo driver que o driver forneceu quando anteriormente chamou IWDFUsbTargetPipe2::ConfigureContinuousReader.
Retornar valor
Nenhum
Comentários
Para registrar uma função de retorno de chamada IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion , seu driver deve fornecer um ponteiro para a interface IUsbTargetPipeContinuousReaderCallbackReadComplete do driver ao chamar IWDFUsbTargetPipe2::ConfigureContinuousReader.
Se um driver tiver criado um leitor contínuo para um pipe USB, a estrutura chamará a função de retorno de chamada OnReaderCompletion do driver sempre que o destino de E/S do driver concluir com êxito uma solicitação de leitura. Se o destino de E/S não concluir uma solicitação com êxito, a estrutura chamará a função de retorno de chamada IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure do driver.
Para acessar o buffer que contém dados que foram lidos do dispositivo, o driver pode chamar IWDFMemory::GetDataBuffer. A estrutura grava os dados no buffer, após o cabeçalho definido pelo parâmetro HeaderLength de IWDFUsbTargetPipe2::ConfigureContinuousReader. Observe que o ponteiro que IWDFMemory::GetDataBuffer retorna pontos para o início do cabeçalho, mas o parâmetro NumBytesTransferred da função de retorno de chamada OnReaderCompletion não inclui o comprimento do cabeçalho.
Por padrão, a estrutura exclui o objeto de memória do buffer depois que a função de retorno de chamada OnReaderCompletion retorna. No entanto, talvez você queira que o objeto de memória permaneça válido depois que a função de retorno de chamada retornar. Por exemplo, talvez você queira que o driver armazene o ponteiro da interface do objeto de memória no espaço de contexto do objeto de pipe da estrutura para que o driver possa processar o conteúdo do objeto de memória após o retorno da função de retorno de chamada. Para estender o tempo de vida do objeto de memória, a função de retorno de chamada deve chamar o método IWDFMemory::AddRef do buffer. Posteriormente, o driver deve chamar o método IWDFMemory::Release do buffer para que a estrutura possa excluir o objeto.
A estrutura sincroniza chamadas para as funções de retorno de chamada OnReaderCompletion e IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure de acordo com as seguintes regras:
- Essas funções de retorno de chamada não são executadas simultaneamente para um pipe USB individual.
- Se o driver criar vários leitores contínuos para vários pipes USB, com várias funções de retorno de chamada OnReaderCompletion e OnReaderFailure , as várias funções de retorno de chamada poderão ser executadas simultaneamente.
- Se o driver tiver especificado o valor padrão NumPendingReads ao chamar IWDFUsbTargetPipe2::ConfigureContinuousReader (ou se ele especificar qualquer valor NumPendingReads maior que 1) e se uma solicitação de leitura for concluída enquanto a função de retorno de chamada OnReaderCompletion estiver sendo executada, a estrutura poderá chamar a função de retorno de chamada OnReaderCompletion novamente antes que a função de retorno de chamada retorne.
- A estrutura não sincroniza essas funções de retorno de chamada com nenhuma outra função de retorno de chamada.
Para obter mais informações sobre a função de retorno de chamada OnReaderCompletion e destinos de E/S USB, consulte Manipulando um destino de E/S USB.
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 | wudfusb.h (inclua Wudfusb.h) |
Confira também
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure