Eventos KS

Se você estiver escrevendo um minidriver AVStream, consulte Tratamento de eventos no AVStream.

Os conjuntos de eventos são grupos de eventos relacionados para os quais um ouvinte pode solicitar notificação. Por exemplo, um ouvinte pode se registrar para ser notificado sobre alterações de estado do dispositivo ou alterações na posição do fluxo. Quando ocorre um evento, o streaming de kernel notifica todos os clientes que se registraram para esse evento.

Os minidrivers descrevem como dão suporte a um evento fornecendo uma estrutura KSEVENT_ITEM que contém ponteiros para lidar com rotinas.

Os ouvintes se registram para notificação chamando a rotina de proxy de streaming de kernel KsSynchronousDeviceControl com o código de controle IOCTL_KS_ENABLE_EVENT e ponteiros para KSEVENT e KSEVENTDATA.structures.

A solicitação IOCTL_KS_DISABLE_EVENT desabilita um evento especificado. O mesmo ponteiro usado para habilitar o evento deve ser usado para desabilitá-lo. Esse ponteiro identifica exclusivamente o evento. Opcionalmente, o cliente pode especificar um ponteiro NULL e um comprimento de zero para desabilitar todos os eventos ativos para o cliente.

Todos os conjuntos de eventos devem dar suporte ao sinalizador KSEVENT_TYPE_BASICSUPPORT. Consulte KSEVENT para obter uma lista de sinalizadores de eventos disponíveis.

Alguns tipos de evento exigem parâmetros adicionais para se registrar para notificação de evento. Por exemplo, o evento KSEVENT_CLOCK_POSITION_MARK em um relógio é disparado quando o relógio atinge um determinado carimbo de data/hora. Consequentemente, os clientes que se registrarem para serem notificados desse evento devem especificar o carimbo de data/hora no qual disparar o evento.

Nesse caso, um minidriver passa parâmetros de dados adicionais no buffer de dados após a estrutura KSEVENTDATA . Minidrivers que dão suporte a esse tipo de evento usam uma estrutura de dados estendida, da qual o primeiro membro é do tipo KSEVENTDATA, para armazenar os dados de notificação.