Sottodispositivi audio dinamici
Alcuni adattatori audio possono modificare dinamicamente le topologie interne in fase di esecuzione. Usando le funzionalità fornite dal sistema nel driver di sistema PortCls (Portcls.sys), i driver della scheda possono fornire supporto software per hardware audio configurabile in modo dinamico.
Ad esempio, la specifica audio Intel High Definition usa il termine codec audio per fare riferimento a una scheda audio integrata che si connette a un controller Audio HD (High Definition Audio) tramite un'interfaccia audio HD. Un codec audio tipico supporta il rilevamento della presenza jack: quando un plug viene inserito o rimosso da un jack, l'hardware genera un interruzione per notificare al driver la modifica nella configurazione hardware. Ad esempio, il driver risponde all'inserimento di un connettore nel jack delle cuffie creando un filtro KS per rappresentare il sottodispositivo audio per le cuffie. Il driver assegna risorse hardware al filtro (ad esempio, le cuffie potrebbero richiedere un controllo del volume e un convertitore digitale-analogico o daC) e registra il filtro come dispositivo audio. Quando l'utente scollega le cuffie, il driver risponde liberando le risorse, eliminando il filtro e rimuovendolo dal Registro di sistema.
Questo comportamento garantisce che quando un'applicazione audio verifica quali dispositivi audio sono registrati, trova solo i dispositivi attualmente collegati. Se un dispositivo viene scollegato, non viene visualizzato nel Registro di sistema.
In Windows Vista, Windows Server 2003 con Service Pack 1 (SP1) e Windows XP con Service Pack 2 (SP2), PortCls supporta le interfacce IUnregisterSubdevice e IUnregisterPhysicalConnection . I driver dell'adattatore audio usano queste due interfacce per eliminare i sottodevice audio che non sono più in uso. Le versioni precedenti di Windows, incluse Windows Server 2003 e Windows XP, non supportano queste interfacce. In queste versioni precedenti di Windows, i sottodevice possono essere creati ma non eliminati dopo la creazione di un subdevice, esiste per la durata dell'oggetto driver dell'adattatore.
L'interfaccia IUnregisterSubdevice contiene un singolo metodo che il driver dell'adattatore può usare per "annullare la registrazione" di un subdevice registrato tramite una chiamata precedente alla routine PcRegisterSubdevice :
IUnregisterSubdevice::UnregisterSubdevice
L'interfaccia IUnregisterPhysicalConnection contiene tre metodi che il driver dell'adattatore può usare per annullare la registrazione delle connessioni fisiche tra i sottodevice:
IUnregisterPhysicalConnection::UnregisterPhysicalConnection
IUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal
IUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal
Questi metodi rimuoveno le connessioni registrate dal driver tramite chiamate precedenti alle routine PcRegisterPhysicalConnection, PcRegisterPhysicalConnectionFromExternal e PcRegisterConnectionToExternal . PortCls archivia le informazioni da una chiamata PcRegisterPhysicalConnectionXxx in modo che il driver della porta possa successivamente usare le informazioni per rispondere alle richieste di proprietà KSPROPERTY_PIN_PHYSICALCONNECTION . Quando si elimina un sottodevice dalla topologia di un adattatore, il driver deve annullare la registrazione delle connessioni fisiche del sottodevice a tale parte della topologia. L'errore di annullare la registrazione delle connessioni fisiche del sottodevice può causare perdite di memoria. PortCls supporta le routinePcRegister Xxx in Windows 2000 e versioni successive.
Gli argomenti seguenti in questa sezione descrivono come implementare il supporto driver per le schede con topologie dinamiche:
Gestione delle topologie dinamiche