Propriedades, eventos e métodos do KS
A arquitetura de streaming de kernel dá suporte à interação entre minidrivers e clientes no modo de usuário por meio de propriedades, eventos e métodos. Usando esses constructos, os clientes de um objeto KS podem obter e definir o estado do objeto, registrar retornos de chamada de notificação para eventos e executar métodos de objeto.
Os clientes solicitam todas as três classes de operação de maneira padronizada. O cliente fornece uma estrutura de alias de KSIDENTIFIER em uma chamada para DeviceIoControl (descrito na documentação do SDK do Microsoft Windows) ou KsSynchronousDeviceControl.
As estruturas de alias são KSPROPERTY, KSEVENT e KSMETHOD. Todos os três incluem os seguintes parâmetros:
Configurar
Operações funcionalmente semelhantes são agrupadas em um conjunto. Cada propriedade, evento ou conjunto de métodos é identificado por um GUID. A Microsoft define GUIDs para operações específicas da tecnologia padrão. Os minidrivers podem definir seus próprios GUIDs para operações personalizadas.
Identificador
Cada operação é especificada por um número de ID dentro do conjunto.
Dados de identificação específicos da operação
Determinadas solicitações de propriedade exigem dados adicionais. Por exemplo, os pinos em um dispositivo de áudio dão suporte ao conjunto de propriedades KSPROPSETID_Audio . Um pino de áudio pode dar suporte a vários canais de áudio diferentes. Os clientes que estão obtendo ou definindo determinadas propriedades de KSPROPSETID_Audio devem especificar o canal de áudio ao qual a solicitação se aplica. Solicitações de evento e método não exigem dados adicionais.
Os GUIDs e identificadores definidos pela Microsoft para operações de uso geral estão localizados no cabeçalho ks.h. GuiDs padrão e identificadores para classes específicas de tecnologia multimídia são encontrados em ksmedia.h.
Os minidrivers AVStream dão suporte a propriedades, eventos e métodos fornecendo um ponteiro para uma estrutura KSAUTOMATION_TABLE no KSFILTER_DESCRIPTOR ou KSPIN_DESCRIPTOR_EX relevante. Um KSAUTOMATION_TABLE contém um ponteiro para uma matriz de objetos KSPROPERTY_SET . Para saber mais, confira Definindo tabelas de automação.
Estas seções contêm informações sobre como os minidrivers dão suporte às três classes de operação: