Compartilhar via


Manipuladores de Data-Intersection padrão

O manipulador de interseção de dados proprietário de um adaptador (o método IMiniport::D ataRangeIntersection do objeto de driver de miniport) pode recusar a execução do marcar de interseção de dados retornando o código STATUS_NOT_IMPLEMENTED status. Nesse caso, o manipulador de interseção de dados padrão do driver de porta executa o marcar em nome do adaptador.

Você pode implementar um manipulador mínimo de interseção de dados para o driver do adaptador como um método DataRangeIntersection que recusa todas as solicitações de interseção de dados retornando STATUS_NOT_IMPLEMENTED.

A implementação atual do manipulador padrão do driver de porta é limitada nos tipos de intervalos de dados que ele pode manipular:

  • Somente formatos de dados PCM

  • Somente fluxos de áudio mono e estéreo

Um driver de adaptador que dá suporte a formatos não PCM ou multicanal deve implementar um manipulador de interseção de dados proprietário em vez de depender do driver de porta para lidar com interseções de dados para esses formatos.

Além disso, o manipulador padrão dá suporte apenas a formatos de áudio que podem ser especificados por uma estrutura de KSDATAFORMAT_DSOUND ou KSDATAFORMAT_WAVEFORMATEX . Ele não dá suporte a nenhum formato que contenha uma estrutura WAVEFORMATEXTENSIBLE , que é necessária, por exemplo, para especificar a máscara de canal para um formato com mais de dois canais.

Ao escolher um formato comum na interseção entre dois intervalos de dados, o manipulador padrão do driver de porta sempre seleciona o valor mais alto na região de interseção de cada parâmetro:

  • Se a interseção abranger mais de uma frequência de amostra válida (11, 22 e 44 kHz, por exemplo), o manipulador padrão escolherá a frequência mais alta.

  • Se a interseção abranger mais de um valor de bits por amostra válido (8, 16 e 32 bits, por exemplo), o manipulador padrão escolherá o maior valor.

  • Se a interseção abranger formatos mono e estéreo, o manipulador padrão escolherá estéreo.

Se o manipulador padrão selecionar um formato insatisfatório, o driver do adaptador terá a opção de rejeitar o formato falhando na chamada newstream (por exemplo, consulte IMiniportWavePci::NewStream) quando SysAudio tentar criar um pino de coletor com o formato . Se a chamada falhar, o SysAudio não continuará procurando interseções de dados. Em vez disso, ele tentará criar uma conexão iterando por meio de uma lista dos formatos PCM compatíveis com filtros do sistema, como KMixer, até encontrar um que o pino do coletor do adaptador também possa dar suporte. A lista é ordenada primeiro com formatos de maior qualidade. Como antes, o adaptador rejeita formatos insatisfatórios na lista falhando nas chamadas newstream para esses formatos.