Terminologia audio WDM

In questa sezione vengono descritte le differenze nella terminologia tra l'architettura del driver audio microsoft Windows (WDM) e l'architettura generica del driver a livelli di Windows. L'architettura del driver generica è exemplificata dai driver porta/miniport SCSI (vedere Architettura driver di archiviazione).

I termini definiti dalle architetture di driver audio generici e WDM sono simili, ma presentano alcune differenze importanti, come descritto di seguito.

Driver miniport (generico)

Il driver miniport (generico) è il driver specifico dell'hardware per un adattatore che si trova su un bus di sistema (ad esempio, PCI o ISA). Questo driver ha un singolo punto di ingresso, DriverEntry e registra una tabella di funzioni con un driver di porta. Questa tabella di funzioni funge da interfaccia superiore del driver miniport.

Il driver miniport si trova sotto il driver di porta nello stack di driver. Vale a dire, tutte le chiamate al driver miniport vengono effettuate dal driver di porta e tutte le chiamate fuori dal driver miniport sono all'interfaccia inferiore del driver della porta.

Nella figura seguente viene illustrato il significato dello stack dei termini, dell'interfaccia superiore perimetrale e dell'interfaccia perimetrale inferiore , mentre vengono usati in questo contesto. Il blocco che rappresenta il driver della porta è in pila sopra il blocco che rappresenta il driver miniport. Di conseguenza, il driver miniport si trova sotto il driver di porta nello "stack".

Diagramma che illustra lo stack di driver con driver di porta in alto e miniport sotto, che mostra interfacce superiore e inferiore perimetrale.

I driver porta e miniport comunicano attraverso le interfacce software che espongono tra loro. Nella figura precedente, queste interfacce sono associate al bordo inferiore del blocco che rappresenta il driver della porta e il bordo superiore del blocco che rappresenta il driver miniport. Questa rappresentazione è l'origine dei termini "interfaccia a bordo inferiore" e "interfaccia superiore perimetrale".

Driver porta (generico)

Il driver porta (generico) circonda un driver miniport.

Driver di porta:

  • Implementa i filtri di streaming WDM.

  • Fornisce un'interfaccia comune al resto del sistema operativo.

  • Gestisce le richieste di I/O dal sistema e ricasta queste richieste come chiamate nella tabella delle funzioni del driver miniport.

  • Fornisce il driver miniport con una libreria di funzioni di supporto (interfaccia del driver di porta inferiore).

Il driver della porta nasconde molti dei dettagli del sistema operativo dal driver miniport e il driver miniport nasconde le specifiche dell'hardware sottostante dal driver di porta. L'implementazione del driver di porta potrebbe subire modifiche per le diverse versioni del sistema operativo, ma l'interfaccia del driver della porta al driver miniport rimane più o meno invariata, consentendo al driver miniport di essere in gran parte indipendente dalla piattaforma.

Minidriver (generico)

Il minidriver (generico) rappresenta un componente hardware in un bus. Il minidriver usa il driver del bus per comunicare con il dispositivo fisico sul bus e associa insieme il driver del bus e uno o più driver di classe.

I driver di classe consentono al minidriver di presentare il dispositivo fisico ai client come tipo di dispositivo logico. Negli ambienti WDM, un minidriver riceve in genere richieste in formato IRP dai driver di classe e invia richieste in formato IRP a un driver del bus.

Un minidriver potrebbe anche dover comunicare con diversi driver di classe. Un esempio di minidriver che associa a più driver di classe è un minidriver per un'unità CD-ROM in un bus IEEE 1394. Potrebbe essere associato a un driver file system in modo che l'unità possa essere accessibile dal file system. Tuttavia, associa anche a un driver di sistema Redbook in modo che l'audio possa essere trasmesso da CD.

Driver del bus (generico)

Il conducente del bus (generico) consente ai minidriver di accedere a un bus fisico. Il livello di astrazione hardware di Microsoft Windows (HAL) viene talvolta definito driver del bus di sistema perché fornisce l'accesso al bus di sistema . Per altre informazioni, vedere Driver del bus.

Driver di classe (generico)

Il driver di classe (generico) implementa il comportamento comune in una classe di dispositivi simili.

Driver di classe:

  • Elimina la duplicazione delle funzionalità nei driver specifici dell'hardware.

  • Non è specifico del bus.

  • Non è a conoscenza dei problemi relativi alle risorse, ad esempio DMA e interruzioni.

Miniport Driver (WDM Audio)

Il driver miniport (audio WDM) implementa un'interfaccia specifica della funzione per una funzione su una scheda scheda audio che si trova su un bus di sistema. Un driver miniport è un componente di un driver di adattatore. Non viene riconosciuto come driver dal sistema operativo. A questo proposito, un driver miniport audio differisce da un driver miniport generico.

A differenza dei driver miniport generici, i driver miniport audio non implementano DriverEntry, non sono registrati e non si basano interamente sui rispettivi driver di porta per il supporto. Più driver miniport audio che indirizzano più funzioni possono essere collegati a un singolo driver di adattatore (e associato a un singolo oggetto dispositivo).

Driver adattatore (WDM Audio)

Il driver dell'adattatore (audio WDM) funge da contenitore per tutti i driver miniport associati a una determinata scheda. Questo driver della scheda viene riconosciuto come driver dal sistema operativo ed è contenuto nel proprio file .sys.

Il driver dell'adattatore audio è costituito da un set di driver miniport e da codice aggiuntivo che risolve i problemi di inizializzazione. Ad esempio, un driver dell'adattatore implementa un punto di ingresso DriverEntry .

Driver porta (WDM Audio)

Il driver di porta (audio WDM) implementa un filtro KS per conto di un driver miniport e opera nel contesto di un driver di classe porta. Il driver di porta espone il codice specifico della funzione del driver miniport come filtro KS al sistema ed è responsabile dell'implementazione di funzionalità indipendenti dalla scheda.

A differenza del driver di porta generico, il driver della porta audio condivide l'oggetto dispositivo ed è quindi creata un'istanza diversa. Un driver di porta audio è anche più simile a un driver di classe generico rispetto a quello che esegue un driver di porta generico in che implementa il comportamento previsto di una classe di dispositivi (non è indipendente dal bus).

Driver di classe porta (WDM Audio)

Il driver della classe di porta (audio WDM) funge da contenitore per una raccolta di driver di porta, ognuno dei quali fornisce il supporto per un tipo diverso di funzione hardware audio. La figura seguente illustra le relazioni tra la classe della porta audio e i driver dell'adattatore.

Diagramma che mostra la relazione tra i driver della classe audio, i driver dell'adattatore e i rispettivi driver miniport.

Un driver di adattatore gestisce una scheda adattatore che potrebbe contenere diverse funzioni hardware. Come illustrato nella figura precedente, il driver dell'adattatore contiene un driver miniport per gestire ogni tipo di funzione hardware. Analogamente, il driver della classe di porta è progettato per fornire supporto alle schede adattatori con più funzioni hardware. Il driver della classe di porta fornisce un driver di porta per ognuno dei tipi di funzione ben definiti supportati. Il driver dell'adattatore associa il driver miniport per una determinata funzione al driver di porta corrispondente per tale tipo di funzione. Il driver di porta per ogni funzione gestisce la comunicazione con i client audio WDM che usano la funzione. Il driver miniport contiene tutto il codice specifico dell'hardware per la gestione di tale funzione.

Il driver della classe di porta (audio WDM) funziona principalmente come contenitore per più sottodevice associati a un singolo oggetto dispositivo. I driver del bus creano un singolo oggetto dispositivo fisico (PDO) per ogni nodo Plug and Play (PnP) che enumerano.

Nel caso di una scheda audio, un singolo nodo PnP contiene spesso più funzioni audio. Per esporre le varie funzioni associate a un nodo come dispositivi distinti richiede in genere la scrittura di un driver del bus per l'adattatore. Il driver del bus enumera le funzioni hardware e crea gli OGGETTI PDO corrispondenti. In questo scenario, uno o più driver specifici della funzione devono associare agli oggetti PDO e negoziare con il driver del bus per l'accesso alle risorse condivise nell'adattatore.

Il driver della classe di porta usa la capacità del driver di streaming del kernel di esporre vari aspetti di un singolo oggetto dispositivo in modo che il sistema operativo riconosca il dispositivo come set di sottodispositivi distinti.

Una stringa di riferimento viene aggiunta al nome del dispositivo per specificare il sottodevice desiderato. Il driver di streaming del kernel invia IP di creazione in base a questa stringa di riferimento. Dopo la creazione di un oggetto file, il driver di streaming del kernel fornisce l'invio di IRP destinati all'oggetto file che rappresenta il sottodispositivo. Inoltre, il driver della classe di porta implementa un modello basato su COM per la creazione di sottodevice.

Un driver dell'adattatore crea un'istanza di un driver di porta e un driver miniport e li associa insieme passando un puntatore al driver miniport come parametro per la funzione di inizializzazione del driver di porta (vedere l'esempio di codice in Creazione subdevice). Lo stack di driver porta/miniport risultante costituisce un filtro KS che rappresenta uno dei tipi di sottodevice supportati dal driver della classe di porta.

La funzione PcRegisterSubdevice del driver della classe di porta registra il sottodevice, che viene percepito come dispositivo dal resto del sistema. Il driver di porta riceve gli IRP di creazione destinati all'oggetto dispositivo, ma solo per gli IRP specificati dalla stringa di riferimento in cui è registrato il subdevice. Il driver di porta riceve anche gli IRP destinati agli oggetti file associati al sottodevice. Il driver di porta è responsabile del comportamento del sottodevice come filtro KS e per comunicare in modo appropriato con il driver miniport.

Per altre informazioni sulla progettazione dei driver per schede audio multifunzione, vedere Dispositivi audio multifunzione.