Compartilhar via


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.
Quando o driver chama IWDFUsbTargetPipe2::ConfigureContinuousReader, ele pode especificar uma função de retorno de chamada IObjectCleanup::OnCleanup. A estrutura chamará essa função de retorno de chamada quando tentar excluir o objeto de memória, depois que o OnReaderCompletion função de retorno de chamada retornar.

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