Condividi tramite


Introduzione alla classe port

La maggior parte dei driver hardware per i dispositivi audio basati su PCI e DMA si basa sulla libreria della classe porta, accessibile tramite il driver di sistema PortCls (Portcls.sys). PortCls è un driver di classe di porta audio incluso da Microsoft come parte del sistema operativo. PortCls fornisce un set di driver di porta che implementano la maggior parte delle funzionalità di filtro del kernel generico (KS). Pertanto, PortCls semplifica l'attività dello sviluppatore di driver audio. Il fornitore hardware deve fornire solo un set di driver miniport per gestire le funzioni specifiche dell'hardware di una scheda audio.

Anche se i fornitori hardware hanno la possibilità di implementare i propri filtri KS per i dispositivi audio, questa opzione è sia difficile che non necessaria per i dispositivi audio tipici. È possibile sviluppare un filtro KS per essere conforme a Stream.sys, il driver di classe Stream o Avstream.sys, il driver di classe AVStream. Ma un filtro KS basato su Stream.sys non può sfruttare i miglioramenti disponibili solo in AVStream. Per altre informazioni sui filtri KS e su PortCls, vedere Introduzione con i driver audio WDM.

L'implementazione interna di PortCls può evolversi per sfruttare i miglioramenti del flusso del kernel nelle versioni successive di Windows mentre mantiene la compatibilità con i driver esistenti.

PortCls viene implementato nel file di sistema Portcls.sys come driver di esportazione (una DLL in modalità kernel) e contiene gli elementi seguenti:

  • Set di funzioni helper che possono essere chiamate dal driver dell'adattatore

  • Raccolta di driver di porta audio

È responsabilità del fornitore hardware di un dispositivo audio, fornire un driver dell'adattatore. Il driver della scheda include l'inizializzazione e il codice di gestione dei driver miniport (inclusa la funzione DriverEntry ) e una raccolta di driver audio miniport .

Quando il sistema operativo carica il driver dell'adattatore, il driver dell'adattatore crea un set di oggetti driver miniport e richiede al driver di sistema PortCls di creare un set corrispondente di oggetti driver di porta. L'esempio di codice nella creazione del dispositivo secondario illustra questo processo. Questi driver di porta sono in genere un subset di quelli disponibili nel file di Portcls.sys. Ogni driver miniport si associa a un driver di porta corrispondente da Portcls.sys per formare un driver secondario completo. La combinazione di driver di porta e miniport è un filtro KS (vedere Filtri audio). Ad esempio, un driver di adattatore tipico può contenere tre driver miniport: WaveRT, DMusUART e Topologia (con interfacce IMiniportWaveRT, IMiniportDMus e IMiniportTopology ). Durante l'inizializzazione, questi driver miniport sono associati ai driver di porta WaveRT, DMus e Topologia (con interfacce IPortWaveRT, IPortDMus e IPortTopology) contenute nel file Portcls.sys. Ognuno di questi tre driver del sottodispositivo assume la forma di un filtro KS. I tre filtri espongono la funzionalità completa della scheda audio.

In genere, i driver di porta forniscono la maggior parte delle funzionalità per ogni classe di sottodevice audio. Ad esempio, il driver di porta WaveRT esegue la maggior parte del lavoro necessario per trasmettere dati audio a un dispositivo audio basato su DMA, mentre il driver miniport fornisce dettagli specifici del dispositivo, ad esempio l'indirizzo DMA e il nome del dispositivo.

I driver dell'adattatore audio e i driver miniport sono in genere scritti in Microsoft C++ e usano ampiamente le interfacce COM. L'architettura del driver porta-miniport promuove la progettazione modulare. I writer di driver miniport devono implementare il driver come classe C++ derivata dall'interfaccia IMiniport , definita nel file di intestazione Portcls.h. L'inizializzazione hardware viene eseguita in fase di caricamento del driver, in genere nel metodo Init della classe derivata da IMiniport, ad esempio IMiniportWaveRT::Init. Per altre informazioni sulle implementazioni COM dei driver miniport audio, vedere COM nel kernel.

Il diagramma seguente illustra la relazione tra i driver porta e miniport e la loro posizione nello stack audio.

Diagramma che illustra la relazione tra i driver porta e miniport nello stack audio.

Nel diagramma precedente il componente KSEndpoint è un file fornito dal sistema fornito con Windows Vista e versioni successive di Windows. Questo componente viene fornito sotto forma di DLL (Audiokse.dll). KSEndpoint astrae l'endpoint del dispositivo in modalità kernel e fornisce al motore audio l'accesso all'endpoint astratta. Per altre informazioni sul motore audio, vedere Esplorazione del motore audio di Windows Vista.

La legenda nel diagramma precedente mostra le caselle che rappresentano i componenti del driver forniti dal fornitore. Si noti che il bordo superiore di ogni interfaccia del driver miniport al bordo inferiore di ogni driver di porta. Ad esempio, il driver di porta WaveRT espone un'interfaccia IPortWaveRT al driver miniport WaveRT, che espone un'interfaccia IMiniportWaveRT al driver di porta. Queste interfacce vengono talvolta definite interfacce superiore perimetrale e perimetrale inferiore .

La classe di porta e i driver di classe AVStream sono simili in quanto sono entrambi driver WDM e supportano l'architettura di streaming del kernel WDM. Tuttavia, i driver della classe di porta differiscono dai driver di classe AVStream nelle aree della gestione e della reentrancy del multiprocessore. I driver della classe di porta eseguono le operazioni seguenti:

  • Usare un approccio a tre livelli che combina il driver di classe, i driver di porta e i driver miniport forniti dal fornitore.

  • Avere un numero limitato di funzioni audio, consentendo ai driver miniport di funzionare più vicino all'hardware audio.

  • Consentire il collegamento di più driver di porta o miniport per un dispositivo specifico. Questa funzionalità consente di supportare meglio le schede multifunzione.

  • Non supportare gli autobus esterni ,ad esempio USB. Tutti i driver di porta supportano i dispositivi che risiedono sugli autobus di sistema (PCMCIA e PCI).

La terminologia per descrivere le porte audio WDM e i driver miniport differisce in alcuni rispetto dai termini usati per altre classi di driver Windows. Queste differenze sono illustrate nella terminologia audio WDM.

Questa sezione illustra gli argomenti seguenti:

Implementazione di interfacce Function-Specific

Supporto di PortCls per sistema operativo