Condividi tramite


Driver miniport topologia

Un driver miniport topologia gestisce i vari controlli hardware (ad esempio, volume e muting) nel circuito mixer dell'adattatore audio. Questo driver enumera i controlli come nodi nella topologia del mixer, consentendo ai client di individuare le interconnessioni tra nodi e per eseguire query e impostare i parametri di controllo in ogni nodo.

Il driver di sistema SysAudio esamina la topologia dell'adattatore quando compila un grafico di filtro audio. L'API mixer (descritta nella sezione multimediale di Windows della documentazione di Microsoft Windows SDK) rappresenta i nodi della topologia come controlli della riga di mixer ed esponeli alle applicazioni in modalità utente, ad esempio SndVol32. Per altre informazioni, vedere SysTray e SndVol32.

Un driver miniport topologia deve implementare un'interfaccia miniport topologia, che il driver di porta usa per inizializzare il driver miniport. L'interfaccia miniport, IMiniportTopology, eredita i metodi nell'interfaccia IMiniport ; non fornisce metodi aggiuntivi. Un driver dell'adattatore audio forma un filtro della topologia associando un'interfaccia IMiniportTopology di un oggetto miniport all'interfaccia IPortTopology di un oggetto porta.

In genere, un filtro di topologia include la maggior parte dei nodi della topologia di una scheda, anche se altri dispositivi all'interno della scheda potrebbero contenere nodi di topologia aggiuntivi. Ad esempio, un dispositivo wave, rappresentato come filtro onda, potrebbe contenere nodi daC (KSNODETYPE_DAC) e ADC (KSNODETYPE_ADC).

L'esecuzione di query e l'impostazione dei parametri di controllo nei nodi della topologia viene eseguita tramite richieste di proprietà. Ogni tipo di nodo è associato a una proprietà specifica o a un set di proprietà. Un nodo può supportare un solo valore di controllo. Ad esempio, un nodo del volume (KSNODETYPE_VOLUME) ha un valore che indica l'impostazione corrente del volume. Altri nodi possono supportare più valori di controllo. Ad esempio, un nodo 3D (KSNODETYPE_3D_EFFECTS) supporta una serie di proprietà del buffer 3D e del listener 3D. Un nodo sum (KSNODETYPE_SUM), invece, non ha valori di controllo.

Un driver miniport topologia usa un descrittore di connessione (PCCONNECTION_DESCRIPTOR) per descrivere una connessione tra due nodi della topologia. Ogni connessione viene indirizzata e specifica sia un oggetto from-node che un to-node. Un nodo potrebbe avere diversi pin e la funzione eseguita da un pin potrebbe essere diversa da quella degli altri pin. Per distinguere un pin da un altro, il driver miniport numeri i pin su un nodo. Questi numeri di pin vengono visualizzati nei descrittori di connessione. Ad esempio, un filtro variabile di stato potrebbe avere tre pin di output, uno per ogni per le frequenze elevate, medie e basse, numerato 1, 2 e 3. Il numero di pin consente ai client del driver miniport di determinare quali connessioni sono associate ai pin.

Un descrittore di connessione usa un identificatore di nodo distinto, PCFILTER_NODE, per distinguere un pin sul filtro da un pin in un nodo all'interno del filtro. Ognuna delle connessioni hardwired del mixer ai dispositivi di rendering audio e acquisizione dei dispositivi nella scheda audio è rappresentata come un pin nel filtro della topologia. Altri pin di filtro topologia rappresentano connessioni fisiche esterne, ad esempio un jack lineout sulla scheda adattatore. I pin su un filtro di topologia rappresentano connessioni fisiche, hardwired dell'hardware dell'adattatore. Pertanto, i pin non possono fornire un controllo esplicito sulla presenza di una connessione e non possono essere usati per gestire il flusso di dati su tale connessione.

Un singolo descrittore di connessione può descrivere una connessione tra due tipi di pin in una topologia. I pin sui due lati di una connessione possono essere entrambi pin sul filtro o sui pin nei nodi all'interno del filtro oppure la connessione può avere un pin di filtro su un lato e un pin del nodo sull'altro. Un driver miniport specifica la topologia come matrice di descrittori di connessione. Un singolo pin può avere più di una connessione, il che significa che lo stesso pin può essere visualizzato in più di un descrittore di connessione nella matrice.

La descrizione della topologia ottenuta da un driver miniport non è progettata per supportare l'individuazione aperta di come interpretare i tipi di nodo sconosciuti al client. Il numero di pin del nodo da solo non fornisce al client le informazioni necessarie per individuare le funzioni dei pin. Anche se il driver miniport identifica il tipo di un nodo (tramite un GUID), non fornisce alcun elenco standard di parametri per descrivere il tipo di nodo o i pin supportati dal tipo di nodo.

Ad esempio, se un client enumera un nodo che usa il GUID di tipo nodo KSNODETYPE_VOLUME per identificare se stesso, il client può usare il nodo solo se conosce le convenzioni per la gestione dei nodi del volume. Per convenzione, un nodo del volume, ad esempio, supporta la proprietà KSPROPERTY_AUDIO_VOLUMELEVEL e assegna rispettivamente i numeri di pin del nodo 0 e 1 al pin di output (origine) e il pin di input (sink). Inoltre, un client in grado di controllare un nodo del volume esegue in genere una ricerca diretta che limita l'esplorazione a un numero relativamente piccolo di tipi di nodo (ad esempio nodi volume e mute). Il client esplora in genere solo parti di un grafico di filtro che è probabile che contengano nodi del volume (ad esempio, linee di mixer).

L'interfaccia miniport supporta il recapito del valore del controllo non richiesto cambia dal driver miniport al driver della porta. Questa funzionalità consente ai dispositivi di controllare knob, dispositivi di scorrimento o commutatori che possono essere manipolati fisicamente dall'utente. Ogni volta che l'utente modifica il valore del controllo di un nodo, un interruzione hardware notifica al driver della porta che si è verificato un evento hardware .