Compartilhar via


Suporte a uma mistura de pinos 2D e 3D

Se o driver de áudio WDM der suporte a uma combinação de pinos 2D e 3D, um pino 3D poderá dobrar para uso como um pino 2D, mas não vice-versa. Quando o DirectSound requer um pino 2D, ele pode substituir um pino 3D não utilizado para essa finalidade, se houver um disponível no driver. No entanto, se o DirectSound exigir um pino 3D, ele continuará pesquisando a lista de instâncias de pino do driver até encontrar um pino 3D, ignorando todos os pinos 2D encontrados durante a pesquisa. O DirectSound verifica a lista de fábricas de pinos do driver na ordem em que eles são listados até encontrar uma instância de pino que atenda aos seus requisitos.

Ao relatar a contagem de pinos 2D, o driver deve especificar o número de instâncias de pino 2D mais o número de instâncias de pino 3D. Ao relatar a contagem de pinos 3D, o driver deve ignorar os pinos 2D e especificar apenas o número de instâncias de pino 3D.

As versões do DirectSound que foram distribuídas com o Microsoft Windows 2000 e o Windows 98 têm um problema conhecido ao lidar com uma fábrica de pinos que expõe uma mistura de pinos 2D e 3D: o DirectSound informa incorretamente que a contagem de pinos 3D é o número de instâncias de pino 2D mais o número de instâncias de pino 3D. Uma solução alternativa para esse problema é escrever seu driver para que ele separe os pinos 2D e 3D em duas fábricas de pinos separadas. Uma fábrica expõe apenas os pinos 2D, e a outra fábrica expõe apenas os pinos 3D.

Com drivers WDM, o DirectSound relata corretamente a contagem de pinos 2D como a soma das contagens dos pinos 2D e 3D das duas fábricas e relata corretamente a contagem de pinos 3D como o número de pinos 3D de uma fábrica de pinos 3D. Ao expor fábricas separadas para pinos 2D e 3D, seu driver deve listar a fábrica de pinos 2D antes da fábrica de pinos 3D. Isso é necessário porque quando o DirectSound está procurando um pino 2D, ele usa o primeiro pino 2D ou 3D que encontra e o DirectSound verifica as fábricas de pinos na ordem em que o driver os lista. Se o driver listar a fábrica 3D primeiro, ele corre o risco de fazer o DirectSound esgotar o fornecimento de pinos 3D usando-os desnecessariamente no lugar de pinos 2D.

Em resumo, se o driver expor uma mistura de pinos 2D e 3D, ele deverá seguir estas regras para ser executado corretamente em versões anteriores do DirectSound:

  • Forneça duas fábricas de pinos separadas para os pinos 2D e 3D, respectivamente.

  • Liste a fábrica de pinos 2D à frente da fábrica de pinos 3D.

Essas soluções alternativas são desnecessárias com versões posteriores do DirectSound. O problema descrito acima é corrigido no Windows Me e no Windows XP e posterior. Ele também é corrigido no DirectSound 8, que é redistribuído para uso com versões anteriores do Windows. Com essa correção, o driver pode combinar com segurança pinos 2D e 3D em uma fábrica de pinos único e o DirectSound relatará corretamente as contagens de pinos 2D e 3D. Além disso, quando o DirectSound requer um pino 2D, ele usa um pino 3D no lugar de um pino 2D somente quando esgota o fornecimento de pinos 2D de todas as fábricas de pinos.