Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O manipulador proprietário de interseção de dados do adaptador (o método IMiniport::DataRangeIntersection do objeto de driver miniport) pode recusar-se a realizar a verificação de interseção de dados retornando o código de status STATUS_NOT_IMPLEMENTED. Nesse caso, o manipulador de interseção de dados padrão do driver de porta executa a verificação 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 do PCM
Somente fluxos de áudio mono e estéreo
Um driver de adaptador que dá suporte a formatos não PCM ou multicanais 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 exemplo 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 válido de bits por amostra (por exemplo, 8, 16 e 32 bits), o manipulador padrão selecionará 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 interrompendo a chamada NewStream (por exemplo, consulte IMiniportWavePci::NewStream) quando o SysAudio tenta criar um pino de saída 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 percorrendo uma lista dos formatos PCM compatíveis com filtros do sistema, como KMixer, até encontrar um que o pino de entrada do adaptador também possa ser compatível. A lista é ordenada primeiro com formatos de qualidade mais alta. Como antes, o adaptador rejeita formatos insatisfatórios na lista, falhando nas chamadas do NewStream para esses formatos.