Interfaces d’assistance Portcls pour le traitement audio déchargé

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 les flux audio déchargés du matériel, votre pilote miniport fonctionne avec PortCls pour diffuser et/ou traiter les données audio.

PortCls peut gérer toutes les propriétés KS (Kernel Streaming) 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 déchargés par le matériel. À la suite 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 utiliser ces interfaces, une pour chaque interface.

Utilisation de 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 les propriétés KS qui accèdent au moteur audio via un handle de filtre KS. La hiérarchie classe/interface est la suivante :

Diagramme montrant la classe de miniport WaveRT personnalisée hérite de IMiniportWaveRT et IMiniportAudioEngineNode.

Par conséquent, si, par exemple, vous développez une classe appelée CYourMiniportWaveRT, alors, comme vous pouvez le voir dans le 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 de 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 de IMiniportStreamAudioEngineNode

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

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

Par conséquent, si, par exemple, vous développez une classe appelée CYourMiniportWaveRTStream, alors, 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 de 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 les flux audio déchargés par le matériel, consultez Implémentation de pilotes audio déchargés par le matériel.