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) |