Condividi tramite


Interfacce helper portcls per l'elaborazione audio caricata

Questo argomento presenta le interfacce helper aggiunte a Microsoft al driver di classe porta audio (PortCls), per semplificare l'implementazione di driver che supportano l'elaborazione audio caricata.

Quando si sviluppa il driver miniport WaveRT che funzionerà con una scheda audio in grado di elaborare flussi audio caricati dall'hardware, il driver miniport funziona con PortCls per trasmettere e/o elaborare dati audio.

PortCls può gestire tutte le proprietà di streaming del kernel correlate al caricamento (KS), ed è ciò che rende semplice sviluppare un driver miniport WaveRT per esporre il supporto per l'elaborazione di flussi audio caricati dall'hardware. In seguito agli aggiornamenti, PortCls chiama solo il driver miniport sottostante per operazioni specifiche dell'hardware e/o del driver tramite due interfacce appena definite:

È necessario sviluppare due classi per usare queste interfacce, una per ogni interfaccia.

Uso di IMiniportAudioEngineNode

La classe sviluppata per lavorare con IMiniportAudioEngineNode deve anche ereditare da IMiniportWaveRT. I metodi definiti in IMiniportAudioEngineNode consentono al driver di usare le proprietà KS che accedono al motore audio tramite un handle di filtro KS. La gerarchia di classi/interfaccia è la seguente:

Diagramma che mostra la classe miniport WaveRT personalizzata che eredita da IMiniportWaveRT e IMiniportAudioEngineNode.

Quindi, se, ad esempio, si sviluppa una classe denominata CYourMiniportWaveRT, come si può vedere dal diagramma precedente, CYourMiniportWaveRT deve implementare tutti i metodi (visualizzati come Operazioni) definiti per le due interfacce padre.

Un modello skeletal per tale classe contiene il codice seguente:

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

    IMP_IMiniportWaveRT;
    IMP_IMiniportAudioEngineNode;
...

};

Il file di intestazione Portcls.h definisce queste interfacce.

Uso di IMiniportStreamAudioEngineNode

La classe sviluppata per lavorare con la seconda interfaccia, IMiniportStreamAudioEngineNode, deve anche ereditare da IMiniportWaveRTStreamNotification. I metodi definiti in IMiniportStreamAudioNode consentono al driver di usare le proprietà KS che accedono al motore audio tramite un handle di istanza pin. La gerarchia di classi/interfaccia è la seguente:

Diagramma che mostra la classe miniport di flusso WaveRT personalizzata che eredita da IMiniportWaveRTStreamNotification e IMiniportStreamAudioEngineNode.

Quindi, se, ad esempio, si sviluppa una classe denominata CYourMiniportWaveRTStream, come si può vedere dal diagramma precedente, CYourMiniportWaveRTStream deve implementare tutti i metodi definiti per le due interfacce padre.

Un modello skeletal per tale classe contiene il codice seguente:

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

};

Il file di intestazione Portcls.h definisce queste interfacce. Per altre informazioni su come sviluppare un driver che può gestire i flussi audio caricati dall'hardware, vedere Implementazione del driver audio caricato hardware.