função de retorno de chamada PFNUSBCAMD_WaitOnDeviceEvent (usbcamdi.h)

O serviço USBCAMD_WaitOnDeviceEvent é usado para executar uma leitura do pipe de interrupção se a câmera tiver um pipe de interrupção para notificações de eventos externos.

Sintaxe

PFNUSBCAMD_WaitOnDeviceEvent PfnusbcamdWaitondeviceevent;

NTSTATUS PfnusbcamdWaitondeviceevent(
  [in] PVOID DeviceContext,
  [in] ULONG PipeIndex,
  [in] PVOID Buffer,
  [in] ULONG BufferLength,
  [in] PCOMMAND_COMPLETE_FUNCTION EventComplete,
  [in] PVOID EventContext,
  [in] BOOLEAN LoopBack
)
{...}

Parâmetros

[in] DeviceContext

Um ponteiro para o contexto específico do dispositivo.

[in] PipeIndex

Especifica o índice do pipe de interrupção.

[in] Buffer

Um ponteiro para o buffer de leitura.

[in] BufferLength

Comprimento do buffer de leitura, em bytes.

[in] EventComplete

Ponteiro para um minidriver de câmera definido CommandCompleteFunction, que é chamado quando a leitura de interrupção é concluída Esse valor pode ser NULL.

[in] EventContext

Ponteiro para um bloco de memória, que é passado como um argumento para o minidriver de câmera definido CommandCompleteFunction.

[in] LoopBack

Especifica se o USBCAMD deve reenviar outra solicitação de leitura para o pipe de interrupção sempre que uma leitura de interrupção for concluída. Definir como TRUE

Retornar valor

USBCAMD_WaitOnDeviceEvent retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Outros códigos de erro possíveis incluem:

Código de retorno Descrição
STATUS_FILE_CLOSED O dispositivo foi removido.
STATUS_INVALID_PARAMETER O USBCAMD pode retornar STATUS_INVALID_PARAMETER por vários motivos, incluindo: o valor passado no argumento PipeIndex é inválido, o tipo do pipe especificado pelo argumento PipeIndex representa um tipo inválido de pipe, uma solicitação de leitura/gravação em massa já existe ou o argumento Buffer é NULL. O comprimento especificado no argumento BufferLength é menor que o tamanho máximo do pacote.
STATUS_PENDING O item de trabalho do evento é adiado.
STATUS_INSUFFICIENT_RESOURCES Não há recursos suficientes para alocar um item de trabalho para ler do pipe.

Comentários

O cenário de uso típico para essa função é uma câmera com um botão instantâneo e um pipe de interrupção associado ao botão. Quando um usuário pressiona o botão instantâneo, a solicitação de leitura no pipe de interrupção é atendida e o minidriver da câmera é chamado de volta. Se o minidriver de câmera definir USBCAMD_CamControlFlag_EnableDeviceEvents no argumento CamControlFlag durante a chamada USBCAMD_InitializeNewInterface, o monitor de STI também será notificado sobre o evento instantâneo.

USBCAMD_WaitOnDeviceEvent não está disponível no USBCAMD versão 1.0.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho usbcamdi.h (inclua Usbcamdi.h)

Confira também

CommandCompleteFunction

USBCAMD_INTERFACE

USBCAMD_InitializeNewInterface