Partager via


Interfaces d’assistance PortCls pour le traitement audio externalisé

Cette rubrique présente les interfaces d’assistance que Microsoft a ajoutées à son pilote de classe de port audio (PortCls), afin de simplifier l’implémentation des pilotes qui prennent en charge le traitement audio déchargé.

Lorsque vous développez votre pilote miniport WaveRT qui fonctionnera avec une carte audio capable de traiter des flux audio déchargés par le matériel, votre pilote miniport fonctionne avec PortCls pour diffuser et/ou traiter des données audio.

PortCls peut gérer toutes les propriétés KS liées au déchargement, et c'est ce qui facilite le développement d'un pilote miniport WaveRT pour exposer la prise en charge du traitement des flux audio transférés au matériel. En raison des mises à jour, PortCls appelle uniquement le pilote miniport sous-jacent pour les opérations matérielles et/ou spécifiques au pilote via deux interfaces nouvellement définies :

Vous devez développer deux classes pour qu’elles fonctionnent avec ces interfaces, une pour chaque interface.

Utilisation d’IMiniportAudioEngineNode

La classe que vous développez pour travailler avec IMiniportAudioEngineNode doit également hériter d’IMiniportWaveRT. Les méthodes définies dans IMiniportAudioEngineNode permettent à votre pilote d’utiliser des propriétés KS qui accèdent au moteur audio via un handle de filtre KS. La hiérarchie de classe/interface est la suivante :

Diagramme montrant une classe miniport WaveRT personnalisée qui hérite d’IMiniportWaveRT et IMiniportAudioEngineNode.

Par exemple, si vous développez une classe appelée CYourMiniportWaveRT, comme vous pouvez le voir à partir du diagramme précédent, CYourMiniportWaveRT doit implémenter toutes les méthodes (affichées en tant qu’opérations) définies pour les deux interfaces parentes.

Un modèle squelette pour une telle classe contient le code suivant :

class CMiniportWaveRT : 
    public IMiniportWaveRT,
    public IMiniportAudioEngineNode,
    public CUnknown
{
...

    IMP_IMiniportWaveRT;
    IMP_IMiniportAudioEngineNode;
...

};

Le fichier d’en-tête Portcls.h définit ces interfaces.

Utilisation d’IMiniportStreamAudioEngineNode

La classe que vous développez pour travailler avec la deuxième interface, IMiniportStreamAudioEngineNode, doit également hériter d’IMiniportWaveRTStreamNotification. Les méthodes définies dans IMiniportStreamAudioEngineNode permettent à votre pilote d’utiliser des propriétés KS qui accèdent au moteur audio via un handle de l'instance de pin. La hiérarchie de classe/interface est la suivante :

Diagramme montrant la classe miniport de flux WaveRT personnalisée qui hérite d’IMiniportWaveRTStreamNotification et d’IMiniportStreamAudioEngineNode.

Par exemple, si vous développez une classe appelée CYourMiniportWaveRTStream, comme vous pouvez le voir dans le diagramme précédent, CYourMiniportWaveRTStream doit implémenter toutes les méthodes définies pour les deux interfaces parentes.

Un modèle squelette pour une telle classe contient le code suivant :

class CMiniportWaveRTStream : 
    public IMiniportWaveRTStreamNotification,
    public IMiniportStreamAudioEngineNode,
    public CUnknown
{
...
    IMP_IMiniportWaveRTStream;
    IMP_IMiniportWaveRTStreamNotification;
    IMP_IMiniportStreamAudioEngineNode;
...

};

Le fichier d’en-tête Portcls.h définit ces interfaces. Pour plus d’informations sur le développement d’un pilote capable de gérer des flux audio déchargés par le matériel, consultez Implémentation des pilotes audio déchargés par le matériel.