Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als u software in de gebruikersmodus wilt opnemen voor gebruik met een apparaat op Windows 10, hebt u de volgende opties om een DCH-compatibel stuurprogramma te maken:
| Method | Scenario |
|---|---|
| Hardwareondersteunings-apps (HSA) | Invoegtoepassingssoftware voor apparaten die is verpakt als een UWP-app die wordt geleverd en onderhouden vanuit de Microsoft Store. Aanbevolen aanpak. |
| Softwareonderdelen | Software-invoegtoepassing voor apparaten is een MSI- of EXE-binair bestand, een Win32-service of software die is geïnstalleerd met behulp van AddReg en CopyFiles. Het gerefereerde binaire bestand kan alleen worden uitgevoerd op desktopversies (Home, Pro en Enterprise). Het binaire bestand waarnaar wordt verwezen, kan niet worden uitgevoerd op Windows 10S. |
Een softwareonderdeel is een afzonderlijk, zelfstandig stuurprogrammapakket dat een of meer softwaremodules kan installeren. De geïnstalleerde software verhoogt de waarde van het apparaat, maar is niet nodig voor de basisfunctionaliteit van het apparaat en vereist geen bijbehorende functiestuurprogrammaservice.
Deze pagina bevat richtlijnen voor het gebruik van softwareonderdelen.
Aan de slag
Als u componenten wilt maken, specificeert een extensie-INF-bestand de INF AddComponent-instructie een of meer keren in de sectie INF DDInstall.Components. Voor elk softwareonderdeel waarnaar wordt verwezen in een INF-extensiebestand, maakt het systeem een virtueel via software geïnventariseerd child-apparaat. Meer dan één stuurprogrammapakket kan verwijzen naar hetzelfde softwareonderdeel.
Onderliggende virtuele apparaten kunnen onafhankelijk van elk ander apparaat worden bijgewerkt, zolang het bovenliggende apparaat is gestart. We raden u aan om functionaliteit te scheiden in zoveel verschillende groeperingen als logisch vanuit het oogpunt van onderhoud en vervolgens één softwareonderdeel te maken voor elke groepering.
U levert voor elk softwareonderdeel een INF-bestand aan.
Als uw softwareonderdeel INF de AddSoftware-instructie opgeeft, is het onderdeel INF:
- Moet een universeel INF-bestand zijn.
- Moet de SoftwareComponent-installatieklasse opgeven.
U kunt de AddSoftware-instructie een of meer keren opgeven.
Note
Wanneer u Type 2 van de AddSoftware-instructie gebruikt, is het niet vereist om een Component INF te gebruiken. De richtlijn kan met succes in elke INF worden gebruikt. Een AddSoftware-instructie van type 1 moet echter worden gebruikt vanuit een Component INF.
Daarnaast komen alle INF(component) overeen met een softwareonderdeelapparaat:
- Kan Win32-gebruikersservices opgeven met behulp van de AddService-instructie.
- Kan software installeren met behulp van de INF AddReg-instructie en de INF CopyFiles-instructie.
- Hiervoor is geen functiestuurprogrammaservice vereist.
- Kan onafhankelijk van het bovenliggend apparaat door de gebruiker worden verwijderd.
U vindt een voorbeeld van een onderdeel-INF in de installatietoolkit voor stuurprogrammapakketten voor universele stuurprogramma's.
Opmerking: Opdat een door software opgesomd componentapparaat kan functioneren, moet het bovenliggende apparaat worden gestart. Als er geen stuurprogramma beschikbaar is voor het bovenliggende apparaat, kunnen stuurprogrammaontwikkelaars hun eigen stuurprogramma maken en optioneel gebruikmaken van het passthrough-stuurprogramma "umpass.sys". Dit stuurprogramma is opgenomen in Windows en doet niets anders dan het apparaat starten. Om umpass.sys te kunnen gebruiken, moeten ontwikkelaars in de DDInstall-sectie de Include/Needs-INF-richtlijnen gebruiken voor elke mogelijke sectie [DDInstall.*], voor de overeenkomstige secties [UmPass.*] zoals hieronder wordt weergegeven, ongeacht of de INF voor die sectie richtlijnen specificeert of niet:
[DDInstall]
Include=umpass.inf
Needs=UmPass
; also include any existing DDInstall directives
[DDInstall.HW]
Include=umpass.inf
Needs=UmPass.HW
; also include any existing DDInstall.HW directives
[DDInstall.Interfaces]
Include=umpass.inf
Needs=UmPass.Interfaces
; also include any existing DDInstall.Interfaces directives
[DDInstall.Services]
Include=umpass.inf
Needs=UmPass.Services
; also include any existing any DDInstall.Services directives
Toegang tot een apparaat vanuit een softwareonderdeel
Als u de apparaatexemplaar-id wilt ophalen van een apparaat dat is gekoppeld aan een softwareonderdeel, gebruikt u de waarde SoftwareArguments in de sectie INF AddSoftware-instructie met de <<DeviceInstanceID>> runtimecontextvariabele.
Het uitvoerbare bestand kan vervolgens de apparaatinstantie-id van het softwareonderdeel ophalen uit de lijst met binnenkomende argumenten.
Als het softwareonderdeel gericht is op het Universal Target Platform, gebruikt u vervolgens de volgende procedure:
- Roep CM_Locate_DevNode aan met de exemplaar-id van het apparaat van het softwareonderdeel om een apparaathandle op te halen.
- Roep CM_Get_Parent aan om een handle naar het bovenliggende apparaat op te halen. Dit bovenliggend apparaat is het apparaat dat het softwareonderdeel heeft toegevoegd met behulp van de instructie INF AddComponent Directive.
- Als u vervolgens de apparaatinstantie-id van het bovenliggende apparaat wilt ophalen, roept u CM_Get_Device_ID aan op de handle van CM_Get_Parent.
Als het softwareonderdeel alleen gericht is op het desktopdoelplatform , gebruikt u de volgende procedure:
- Roep SetupDiCreateDeviceInfoList aan om een lege set met apparaatgegevens te maken.
- Roep SetupDiOpenDeviceInfo aan met de apparaatexemplaren-id van het softwareonderdeelapparaat.
- Roep SetupDiGetDeviceProperty aan om
DEVPKEY_Device_Parentde apparaatexemplaren-id van het bovenliggende item op te halen.
Example
In het volgende voorbeeld ziet u hoe u een softwareonderdeel kunt gebruiken om een configuratiescherm te installeren met behulp van een uitvoerbaar bestand voor een grafische kaart.
Stuurprogrammapakket INF-bestand
[Version]
Signature = "$WINDOWS NT$"
Class = Extension
ClassGuid = {e2f84ce7-8efa-411c-aa69-97454ca4cb57}
ExtensionId = {zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz} ; replace with your own GUID
Provider = %CONTOSO%
DriverVer = 06/21/2006,1.0.0.0
CatalogFile = ContosoGrfx.cat
PnpLockdown = 1
[Manufacturer]
%CONTOSO%=Contoso,NTx86
[Contoso.NTx86]
%ContosoGrfx.DeviceDesc%=ContosoGrfx, PCI\VEN0001&DEV0001
[ContosoGrfx.NT]
;empty
[ContosoGrfx.NT.Components]
AddComponent = ContosoControlPanel,, Component_Inst
[Component_Inst]
ComponentIDs = VID0001&PID0001&SID0001
[Strings]
CONTOSO = "Contoso Inc."
ContosoGrfx.DeviceDesc = "Contoso Graphics Card Extension"
Softwareonderdeel INF-bestand
[Version]
Signature = "$WINDOWS NT$"
Class = SoftwareComponent
ClassGuid = {5c4c3332-344d-483c-8739-259e934c9cc8}
Provider = %CONTOSO%
DriverVer = 06/21/2006,1.0.0.0
CatalogFile = ContosoCtrlPnl.cat
PnpLockdown = 1
[SourceDisksNames]
1 = %Disk%,,,""
[SourceDisksFiles]
ContosoCtrlPnl.exe = 1
[DestinationDirs]
DefaultDestDir = 13
[Manufacturer]
%CONTOSO%=Contoso,NTx86
[Contoso.NTx86]
%ContosoCtrlPnl.DeviceDesc%=ContosoCtrlPnl, SWC\VID0001&PID0001&SID0001
[ContosoCtrlPnl.NT]
CopyFiles=ContosoCtrlPnl.NT.Copy
[ContosoCtrlPnl.NT.Copy]
ContosoCtrlPnl.exe
[ContosoCtrlPNl.NT.Services]
AddService = , %SPSVCINST_ASSOCSERVICE%
[ContosoCtrlPnl.NT.Software]
AddSoftware = ContosoGrfx1CtrlPnl,, Software_Inst
[Software_Inst]
SoftwareType = 1
SoftwareBinary = %13%\ContosoCtrlPnl.exe
SoftwareArguments = <<DeviceInstanceID>>
SoftwareVersion = 1.0.0.0
[Strings]
SPSVCINST_ASSOCSERVICE = 0x00000002
CONTOSO = "Contoso"
ContosoCtrlPnl.DeviceDesc = "Contoso Control Panel"
Het stuurprogrammavalidatie- en indieningsproces is hetzelfde voor onderdeel-INF's als voor reguliere INF's. Zie Windows HLK Getting Started voor meer informatie.
Zie Door het systeem gedefinieerde apparaatinstallatieklassen die beschikbaar zijn voor leveranciers voor meer informatie over installatieklassen.