Solicitações de propriedade de áudio

Os clientes de um driver de áudio WDM (Modelo de Driver do Microsoft Windows) podem enviar solicitações de propriedades KS para os filtros KS e pinos instanciados pelo driver. Por exemplo, um cliente de modo de usuário pode enviar uma solicitação de propriedade KS chamando a função DeviceIoControl (consulte a documentação do SDK do Microsoft Windows) com um código de controle de E/S de IOCTL_KS_PROPERTY. Essa função envia um IRP que contém a solicitação de propriedade para o objeto de pino ou filtro especificado.

Os drivers de áudio dão suporte a solicitações get, set e basic-support em propriedades (KSPROPERTY_TYPE_GET, KSPROPERTY_TYPE_SET e KSPROPERTY_TYPE_BASICSUPPORT). Para obter mais informações, consulte Conjuntos de propriedades de drivers de áudio.

Um cliente pode enviar solicitações para três tipos de propriedades: propriedades de filtro, propriedades de pino e propriedades de nó. Para obter mais informações, consulte Propriedades filter, pin e node.

Ao enviar uma solicitação de propriedade de filtro para um objeto de filtro, o cliente especifica o filtro de destino por seu identificador de instância (consulte Filter Factories). Da mesma forma, ao enviar uma solicitação de propriedade de pin para um objeto pin, o pino de destino é especificado por seu identificador de instância (consulte Pin Factories). Qualquer tipo de solicitação contém uma estrutura KSPROPERTY que especifica o seguinte:

  • Um GUID que identifica o conjunto de propriedades

  • Um índice que identifica um item de propriedade dentro do conjunto de propriedades especificado

  • Sinalizadores que indicam o tipo de solicitação de propriedade (obter, definir ou suporte básico)

As propriedades relacionadas são reunidas para formar um conjunto de propriedades. Uma propriedade específica é identificada por seu conjunto de propriedades e por um índice que especifica sua posição dentro desse conjunto.

Uma solicitação de propriedade de nó contém uma estrutura KSNODEPROPERTY , que combina uma estrutura KSPROPERTY e uma ID de nó. Dependendo da propriedade do nó, o destino para a solicitação de propriedade é uma instância de filtro ou uma instância de pino.

Se um filtro puder criar mais de uma instância de um tipo de nó específico, o destino da solicitação será especificado por um identificador de pino. O identificador identifica a instância de pino no início ou no final do caminho de dados no qual a instância do nó reside. No caso de um filtro que contém um nó SUM ou MUX (consulte KSNODETYPE_SUM e KSNODETYPE_MUX), as seguintes regras se aplicam:

  • Se a propriedade pertencer a um nó que fica downstream de um pino de coletor (entrada) e upstream do nó SUM ou MUX, a solicitação de propriedade será enviada para o pino do coletor.

  • Se a propriedade pertencer a um nó que fica downstream de um nó SUM ou MUX e upstream de um pino de origem (saída), a solicitação de propriedade será enviada para o pino de origem. (Além disso, uma solicitação de propriedade para um nó SUM ou MUX é enviada para o pin de origem.)

Com essas convenções, um nó específico em um caminho de dados específico pode ser identificado exclusivamente.

Para obter informações sobre como usar a API do mixer para percorrer os nós em um caminho de dados, consulte Topologia de Streaming de Kernel para Tradução de API do Mixer de Áudio.