Compartilhar via


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 um evento ocorre, 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 ativar o evento deve ser usado para desativá-lo. Esse ponteiro identifica exclusivamente o evento. Opcionalmente, o cliente pode especificar um ponteiro NULL e um comprimento igual a zero para desabilitar todos os eventos ativos do cliente.

Todos os conjuntos de eventos devem dar suporte à flag 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 timestamp. Clientes que se registrarem para serem notificados deste evento devem especificar o momento em que o evento deve ser disparado.

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.