Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En ljudenhets drivrutinsinställningar kan ofta bevaras i operativsystemuppgraderingar. Efter uppgraderingen är målet att flytta användarinställningarna framåt, samtidigt som du ser till att ljudslutpunkterna korrekt återspeglar operativsystemet och drivrutinsfunktionerna.
Migrering av ljudslutpunkt
Under OS-uppgraderingar kan en ljudslutpunktsmigreringsprocess köras. Processen försöker flytta så mycket information som möjligt framåt, så länge det är säkert att göra det. När du utvecklar ljuddrivrutinen bör du ha dessa migreringsbeteenden i åtanke.
Den här slutpunktsmigreringsprocessen kan köras i följande situationer.
- Uppdatering av operativsystemet.
- Uppdateringar av ljuddrivrutiner. Detta inkluderar installation av en ljudtilläggsdrivrutin eller en AudioProcessingObject. Mer information finns i Skapa en installation av en komponentiserad ljuddrivrutin.
- Den befintliga ljuddrivrutinen installeras om. Den här ominstallationen kan ske när ljudfelsökaren körs. Detta kan också inträffa via enhetshanteraren genom att göra en "uppdateringsdrivrutin" och välja den drivrutin som redan är installerad.
- AudioEndpointBuilder hanteras. När som helst när det finns en felkorrigering i tjänsten AudioEndpointBuilder som uppdateras i släppta versioner av Windows.
- Revisionen av den inbyggda programvaran på en USB-ljuddrivrutin har ändrats.
- Ljuddrivrutinen ändrar slutpunktskonfigurationen via KSPROPERTY_JACK_DESCRIPTION3.
Migreringsprocessen för ljudslutpunkten
Migreringsprocessen för ljudslutpunkter gör följande.
- Kopierar användarkontrollerade slutpunktsegenskaper.
- Kopierar FRAMÅTRIKTADE CAPX-egenskaper.
Migreringsprocessen för ljudslutpunkten gör inget av följande.
- Kopierar inte FXProperties framåt innan CAPX är tillgängligt med Windows 11.
- Den kopierar inte vidarebefordrande egenskaper som inte finns i listan över användarinställningar som är kända för operativsystemet.
Från och med Windows 11 används ett nytt "CAPX"-inställningsramverk för att lagra inställningar. Med Settings Framework kan API:er exponera metoder för att fråga och ändra egenskapsarkivet för ljudeffekter ("FX Property Store") på en ljudslutpunkt. Mer information finns i Windows 11 API:er för ljudbearbetningsobjekt.
Matcha slutpunkterna före uppgradering med slutpunkterna efter uppgradering.
Migreringsprocessen matchar slutpunkterna före uppgraderingen med slutpunkterna efter uppgraderingen med hjälp av dessa två element.
- Maskinvaru-ID – Mer information om maskinvaru-ID finns iSystem-Wide unika enhets-ID:n.
- Referenssträng – Användning av referenssträngen beskrivs nedan.
Observera att eftersom nya slutpunkter skapas kommer cachelagring av mmdevice-ID:n inte att fungera under slutpunktsmigreringsprocessen.
Registrerad underenhet
Portklassdrivrutinens pcRegisterSubdevice-funktion registrerar underenheten, som uppfattas som en enhet av resten av systemet. Funktionen registrerar enhetsgränssnittsinstansen för ett filterobjekt som representerar en underenhet på ett ljudkort. I/O-chefen lägger till strängen som anges av parametern Namn i referenssträngen som används för att identifiera instansen. Den ändrade referenssträngen är användbar för att skilja mellan underenheterna i ljudkortet. Mer information om referenssträngar finns i IoRegisterDeviceInterface.
Användning av referenssträngar
Ljudslutpunkter identifieras av referenssträngen som skickades till PnP när KS-gränssnittet skapades, tillsammans med pin-ID:t för den externa anslutningsappen. Om du ändrar dessa värden skapas en ny ljudslutpunkt. Den nya ljudutgången kommer inte att innehålla användarinställningarna som är associerade med den tidigare referenssträngen och kontaktpinne-ID:t.
Om maskinvaru-ID:t är detsamma mellan två eller flera installerade ljudenheter och referenssträngarna också är identiska, kommer migreringssystemet inte att kunna migrera inställningarna korrekt på grund av att slutpunkterna inte matchar slutpunkterna före migreringen till slutpunkterna efter migreringen.
Installation av flera kopior av samma rotenumererade ljudenheter i alla versioner av Windows, som alla använder samma maskinvaru-ID och referenssträngar, kommer inte att migrera korrekt.
Före Windows 11
För rotuppräknade programvaruljudenheter på system före Windows 11 migreras inte ljudslutpunkter med samma referenssträngvärden korrekt.
När du skapar en rotuppräknad programvaruljudenhet som riktar sig mot Windows-versioner före Windows 11 måste ett unikt referenssträngvärde användas för varje ljudslutpunkt för att säkerställa en lyckad migrering.
Windows 11 och senare
Rotuppräknade programvaruljudenheter på system på och efter Windows 11, utan maskinvaru-ID, kommer ljudslutpunkter med samma referenssträngvärden inte att migreras korrekt.
När du skapar en rotuppräknad programvaruljudenhet som riktar sig mot Windows-versioner efter Windows 11 måste ett unikt maskinvaru-ID anges i drivrutins-inf, och varje rotuppräknad programvaruljudenhet kan bara installeras en enda gång med det maskinvaru-ID:t. Om du vill installera flera kopior av samma drivrutin måste olika referenssträngar användas på varje installation för att säkerställa en lyckad migrering.
Referenssträngsregler
Vi rekommenderar starkt att du inte använder standardreferenssträngarna "wave" och "topo" som används i ljudexemplets drivrutiner. Mer beskrivande referenssträngar bör användas i stället. Drivrutiner som använder standardreferenssträngarna riskerar att få sina migreringsdata förlorade eller tillämpade på fel enhet om ett maskinvaru-ID inte är tillgängligt eller matchar någon annan drivrutin med hjälp av dessa referenssträngar. En rimlig strategi skulle vara något i stil med "ContosoSoftwareRender-output2". Att inkludera ett unikt leverantörsnamn hjälper till att skilja referenssträngen åt.
Referenssträngar måste förbli statiska för installation av ljuddrivrutiner, uppdateringar, OS-uppdateringar, omstarter osv. Om referenssträngen ändras skapas en ny ljudslutpunkt och användarinställningarna kopieras inte från den föregående slutpunkten till den nya slutpunkten.
Namn på maskinvaru-ID-enhetsinstans
Maskinvaru-ID för ljuddrivrutiner definieras i avsnittet Modeller i INF-filen. Maskinvaru-ID:t identifierar minst en enhet och refererar till avsnittet DDInstall i INF-filen för den enheten. Den anger också en unik maskinvaruidentifierare (ID) för modellavsnittet för den enheten. Mer information finns i avsnittet INF-modeller och AVSNITTET INF DDInstall.
Den här INF-filen visar enhetsbeskrivningen från avsnittet DDInstall i sysvad-ljudexemplet.
[SYSVAD.NT$ARCH$]
%SYSVAD_SA.DeviceDesc%=SYSVAD_SA, Root\sysvad_ComponentizedAudioSample
SYSVAD_SA.DeviceDesc="Virtual Audio Device (WDM) - Tablet Sample"
Den här INF-filen visar hur enhetsbeskrivningen skulle anpassas av en OEM-tillverkare.
[CONTOSO.NT$ARCH$]
%CONTOSO_SA.DeviceDesc%=CONTOSO_SA, Root\contoso_ContosoSoftwareRender
CONTOSO_SA.DeviceDesc="Description of the Contoso Software Render Driver"
Maskinvaru-ID:t som AudioEndpointBuilder stämmer överens med är Root\contoso_ContosoSoftwareRender
Inställningar lagrade i registret
En drivrutin för ljudkort kan hålla reda på sina aktuella enhetsinställningar (främst volymnivåer och inställningar för att stänga av ljudet) i systemregistret. Drivrutinen lagrar vanligtvis dessa inställningar i den systemspecifika drivrutinsnyckeln (representeras av INF-nyckelordet HKR) under undernyckeln "Inställningar". När användaren ändrar de här inställningarna via en kontrollpanel eller ett annat ljudprogram uppdaterar drivrutinen lämpliga registerposter. Varje gång systemet startas återställer drivrutinen enhetsinställningarna från registret.
Användarna föredrar i stort sett det här beteendet eftersom det bevarar de justeringar de har gjort i systemet över tid i stället för att tvinga dem att försöka återställa sina inställningar manuellt varje gång de uppgraderar operativsystemet.
Vissa drivrutiner skriver dock över de här inställningarna med standardvärden varje gång de installeras. En bättre metod är att en drivrutin vid installationen avgör om vissa drivrutinsspecifika poster redan finns. Om de finns bör drivrutinen bevara de inställningar som finns i dessa poster i stället för att skriva över dem.
Direktiven i avsnittet tilläggsregister i drivrutinens INF-fil anger om befintliga registerposter ska skrivas över. Mer information finns i beskrivningen av flaggan FLG_ADDREG_NOCLOBBER i INF AddReg-direktivet.