Partager via


Configuration requise pour une fabrique de broches non PCM

Sous Windows XP et versions ultérieures et Microsoft Windows Me, les pilotes qui luent des formats WAVEFORMATEX non PCM doivent exposer leurs broches non PCM conformément aux instructions suivantes.

Tout d’abord, définissez une fabrique de broches pour votre format de données non-PCM qui est distincte de toutes les fabriques de broches PCM. PCM et non PCM ne peuvent pas partager la même fabrique de broches à instance, car la seule broche instance est automatiquement allouée à KMixer. Si la fabrique de broches prend en charge plusieurs instances, PCM et non-PCM peuvent coexister sur la même fabrique de broches. Dans ce cas, toutefois, vous ne pouvez pas garantir que ces instances de broches sont disponibles pour un client non PCM au moment de l’exécution . Il est possible que les clients PCM les aient déjà allouées. L’option la plus sûre consiste à fournir une fabrique de broches distincte pour votre format non PCM.

Pour que la broche soit découverte et utilisée par DirectSound 8, définissez cette fabrique de broches non PCM sur un filtre qui prend déjà en charge PCM. Dans le cas contraire, DirectSound ne détecte pas la broche non PCM. Cela signifie également qu’un appareil qui ne prend pas du tout en charge PCM ne peut pas prendre en charge un format non PCM.

Ensuite, implémentez un gestionnaire d’intersection de données sur votre broche non PCM. PortCls fournit un gestionnaire intégré, mais ce gestionnaire par défaut choisit toujours PCM. Vous devez donc ajouter votre propre gestionnaire pour les formats non PCM. Vous ne devez pas prendre en charge WAVE_FORMAT_PCM dans le gestionnaire d’intersections pour votre broche non PCM. Notez que ce gestionnaire peut être appelé avec un OutputBufferLength de 0, auquel cas l’appelant demande uniquement la taille de la plage de données préférée, pas pour les données elles-mêmes. Dans ce cas, le gestionnaire doit répondre en copiant la taille de la plage de données non PCM dans le paramètre ResultantFormatLength et en retournant STATUS_BUFFER_OVERFLOW. L’exemple Msvad du Kit de pilotes Windows (WDK) contient le code d’une routine DataRangeIntersection que vous pouvez utiliser comme exemple de gestionnaire. Pour tester votre routine DataRangeIntersection , utilisez l’utilitaire KsStudio pour instancier votre code pin . Il appelle d’abord votre gestionnaire d’intersection afin de déterminer un format par défaut acceptable. Pour prendre en charge un format non PCM, votre pilote doit le gérer correctement aux emplacements suivants :