Método IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion (wudfusb.h)
[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum recurso novo 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 aoda UMDF .]
A função de retorno de chamada de evento OnReaderCompletion do 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 ele chamou anteriormente IWDFUsbTargetPipe2::ConfigureContinuousReader.
Valor de retorno
Nenhum
Observações
Para registrar um função de retorno de chamada IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion, O driver deve fornecer um ponteiro para a interface de IUsbTargetPipeContinuousReaderCallbackReadComplete do driver ao chamar IWDFUsbTargetPipe2::ConfigureContinuousReader.
Se um driver tiver criado um leitor contínuo para um pipe USB, a estrutura chamará o onReaderCompletion do driver função de retorno de chamada 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 com êxito uma solicitação, a estrutura chamará o do driver IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure função de retorno de chamada.
Para acessar o buffer que contém dados 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 OnReaderCompletion função de retorno de chamada NumBytesTransferred não inclui o comprimento do cabeçalho.
Por padrão, a estrutura exclui o objeto de memória do buffer após o OnReaderCompletion função de retorno de chamada 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 o OnReaderCompletion e IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure funções de retorno de chamada 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ários OnReaderCompletion e OnReaderFailure funções de retorno de chamada, as várias funções de retorno de chamada poderão ser executadas simultaneamente.
- Se o driver tiver especificado o valor padrão NumPendingReads quando ele chamar IWDFUsbTargetPipe2::ConfigureContinuousReader (ou se especificar qualquer NumPendingReads valor maior que 1) e se uma solicitação de leitura for concluída enquanto a função OnReaderCompletion de retorno de chamada estiver em execução, a estrutura poderá chamar o OnReaderCompletion função de retorno de chamada novamente antes que a função de retorno de chamada retorne.
- A estrutura não sincroniza essas funções de retorno de chamada com outras funções 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 umde destino de E/S USB.
Requisitos
Requisito | Valor |
---|---|
fim do suporte | Indisponível no UMDF 2.0 e posterior. |
da Plataforma de Destino | Área de trabalho |
versão mínima do UMDF | 1.9 |
cabeçalho | wudfusb.h (inclua Wudfusb.h) |
Consulte também
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure