Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Använd en primitiv drivrutin för att hantera programvara som använder INF-baserad installation men som inte nödvändigtvis är kopplad till en viss maskinvaruenhet.
Bakgrund och fördelar med primitiva drivrutiner
Före Windows 10 version 1903 hade vissa typer av programvara som använde INF-baserad installation men inte nödvändigtvis var knutna till en viss maskinvaruenhet inte helt stödda av operativsystemet. Även om dessa programvarudelar använde INF-filer som ett manifest för installation, var operativsystemet inte direkt medvetet om det här scenariot och hade inte stöd för att hantera det internt.
Eftersom dessa programvarudelar inte var knutna till en maskinvaruenhet skulle de installeras på hela systemet oavsett maskinvara. Därför fanns det ingen garanti för att dessa programvarudelar installerades, avinstallerades eller hanterades korrekt vid os-uppgradering.
Från och med Windows 10 version 1903 hanterar och hanterar Plug and Play-plattformen den här typen av programvarupaket som en entitet på toppnivå, vilket resulterar i förbättrad tillförlitlighet och garanterat korrekt beteende för sådan programvara, särskilt under scenarier för uppgradering och återställning av operativsystem.
De typer av programvara som utnyttjar det här nya plattformsstödet kallas primitiva drivrutiner. Primitiva drivrutiner fortsätter att använda INF-baserad installation och den underliggande plattformen använder Driver Store för att hålla reda på alla relevanta filer.
Den underliggande Plug and Play-plattformen installerar, avinstallerar och underhåller drivrutinstillståndet vid operativsystemuppgradering.
Konceptuellt hanteras dessa INF:er på olika sätt. Tidigare bearbetades [DefaultInstall] (och ofta [DefaultUninstall]) av SetupAPI på ett skriptliknande sätt, där INF användes som ett manifest och SetupAPI körde instruktionerna i relevanta avsnitt för anroparens räkning.
Om du vill ångra ändringarna (för att utföra en avinstallation) måste du ange ett INF-avsnitt som utförde den motsatta uppsättningen instruktioner som installationsavsnittet. INF-utnyttjande primära drivrutiner kräver dock inte en avinstalleringssektion.
Primitiva drivrutiner använder samma installations- och avinstallations-API:er som enhetsdrivrutiner, där avinstallations-API:et utför den inverterade uppsättningen åtgärder som installationsåtgärden, och när drivrutinspaketet installeras eller avinstalleras bearbetas dessa avsnitt.
INF-krav för åtkomst till primitiva drivrutinsfunktioner
Avsnittet Version måste vara klart, precis som PnP-drivrutiner.
Providerdirektivet måste fyllas i.
Klassdirektivet måste fyllas i.
ClassGuid-direktivet måste fyllas i.
Drivrutinen måste vara DCH-kompatibel.
Det får inte finnas något [tillverkare]-avsnitt.
[DefaultInstall] sektioner måste vara arkitekturdekorerade, och inga odekorerade versioner får förekomma.
Rätt: [DefaultInstall.NTamd64]
Fel: [DefaultInstall]
[DefaultUninstall] kanske inte finns i INF (se äldre kompatibilitet för ett undantag).
Primitiva drivrutiner som endast riktar sig till Windows 10 version 1903 och senare
Primitiva drivrutiner som endast är avsedda för Windows 10 version 1903 och senare bör använda DiInstallDriver och DiUninstallDriver för att installera och avinstallera programvaran korrekt i/från drivrutinsarkivet.
Drivrutiner bör också använda Dirid 13 för att korrekt ange drivrutinsarkivet som önskat mål som ska installeras.
Bakåtkompatibilitet
[DefaultUninstall] är förbjudet i Primitiva drivrutiner, men ett undantag görs för os-kompatibilitet på lägre nivå. Windows introducerar ett INF-direktiv som gör att en operativsystemversion som stöder primitiva drivrutiner ignorerar avsnittet [DefaultUninstall]. Om ditt drivrutinspaket behöver stöd för operativsystemversioner på låg nivå inkluderar du följande syntax för att säkerställa att plattformen hanterar sådana fall på rätt sätt:
[DefaultUninstall.NTamd64]
LegacyUninstall=1
Avsnitten [DefaultInstall] och [DefaultUninstall] måste fortfarande vara arkitekturdekorerade. Men genom att LegacyUninstall=1inkludera ignorerar Windows avsnittet [DefaultUninstall] (i Windows 10 version 1903 och senare). Genom att göra det kan du inkludera det avsnittet i din INF, där det kan användas nednivå med ett äldre program för installation/avinstallation för att avinstallera det primitiva drivrutinspaketet.
Från och med Windows 10 version 1903, om du skickar en arkitektur-smyckad [DefaultInstall]- eller [DefaultUninstall]-sektion till InstallHInfSection-API:t i setupapi.dll, kommer drivrutinspaketet att kontrolleras för att avgöra om det stöder primitiva drivrutinsfunktioner. Om den stöder primitiva drivrutinsfunktioner, i stället för att bearbeta det angivna avsnittet på det äldre sättet, skickas INF till DiInstallDriver eller DiUninstallDriver efter behov. På så sätt kan ett enda installationsprogram använda primitiva drivrutiner på kompatibla OS-versioner och behålla stöd för tidigare OS-versioner.
Konvertera från en inf-enhetsdrivrutin
Konvertering av en INF som använder [Tillverkare] till en som använder [DefaultInstall] kräver mindre ändringar i INF. Till skillnad från avsnittet [Tillverkare] är avsnittet [DefaultInstall] både en startpunkt och ett installationsavsnitt. Detta kombinerar konceptuellt avsnittet [Tillverkare], [Modeller] och [DDInstall] i ett.
Följande INF får ett 1297-fel i InfVerif eftersom den inte installeras på någon maskinvara:
[Manufacturer]
%Company% = Driver, NTx86, NTamd64
[Driver.NTx86]
%DeviceDesc% = InstallSection_32,
[Driver.NTamd64]
%DeviceDesc% = InstallSection_64,
[InstallSection_64]
CopyFiles = MyCopyFiles_64
AddReg = MyAddReg
[InstallSection_64.Services]
AddService = MyService,, MyService_Install
[InstallSection_32]
CopyFiles = MyCopyFiles_x86
AddReg = MyAddReg
[InstallSection_32.Services]
AddService = MyService,, MyService_Install
Ovanstående INF kan konverteras till en [DefaultInstall]-baserad INF, enligt nedan.
[DefaultInstall.NTamd64]
CopyFiles = MyCopyFiles_64
AddReg = MyAddReg
[DefaultInstall.NTamd64.Services]
AddService = MyService,, MyService_Install
[DefaultInstall.NTx86]
CopyFiles = MyCopyFiles_x86
AddReg = MyAddReg
[DefaultInstall.NTx86.Services]
AddService = MyService,, MyService_Install