Partilhar via


Eventos KS

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

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 no estado do dispositivo ou alterações na posição do fluxo. Quando ocorre um evento, o streaming do 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 manipulação de rotinas.

Os ouvintes se registram para notificação chamando a rotina de proxy de streaming do 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 que foi usado para habilitar o evento deve ser usado para desativá-lo. Este ponteiro identifica exclusivamente o evento. Opcionalmente, o cliente pode especificar um ponteiro NULL e comprimento zero para desativar todos os eventos ativos para o cliente.

Todos os conjuntos de eventos devem suportar o 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 eventos. Por exemplo, o evento KSEVENT_CLOCK_POSITION_MARK num relógio é acionado quando o relógio atinge uma determinada marca temporal. Consequentemente, os clientes que se registam para serem notificados deste evento devem especificar o timestamp no qual o evento deve ser acionado.

Nesse caso, um minidriver passa dados adicionais no buffer de dados após a estrutura KSEVENTDATA. Os minidrivers que suportam 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.