Condividi tramite


Uso di un file INF componente

Se vuoi includere software in modalità utente da usare con un dispositivo in Windows 10, hai le opzioni seguenti per creare un driver conforme a DCH:

metodo Scenario
App di supporto hardware (HSA) Software del componente aggiuntivo del dispositivo in pacchetto come app UWP fornita e fornita da Microsoft Store. Approccio consigliato.
Componenti software Il software del componente aggiuntivo del dispositivo è un file binario MSI o EXE, un servizio Win32 o un software installato tramite AddReg e CopyFiles. I file binari a cui si fa riferimento vengono eseguiti solo nelle edizioni desktop (Home, Pro ed Enterprise). Il file binario a cui si fa riferimento non verrà eseguito in Windows 10S.

Un componente software è un pacchetto driver autonomo separato che può installare uno o più moduli software. Il software installato migliora il valore del dispositivo, ma non è necessario per la funzionalità di base del dispositivo e non richiede un servizio driver di funzione associato.

Questa pagina fornisce linee guida per l'uso dei componenti software.

Introduzione

Per creare componenti, un file INF di estensione specifica la direttiva INF AddComponent una o più volte nella sezione INF DDInstall.Components . Per ogni componente software a cui si fa riferimento in un file INF di estensione, il sistema crea un dispositivo figlio enumerato dal software virtuale. Più pacchetti driver possono fare riferimento allo stesso componente software.

Gli elementi figlio del dispositivo virtuale possono essere aggiornati in modo indipendente esattamente come qualsiasi altro dispositivo, purché il dispositivo padre venga avviato. È consigliabile separare le funzionalità in più raggruppamenti diversi, come ha senso dal punto di vista della manutenzione e quindi creare un componente software per ogni raggruppamento.

Verrà fornito un file INF per ogni componente software.

Se il componente software INF specifica la direttiva AddSoftware, il componente INF:

  • Deve essere un file INF universale.
  • Specificare la classe di installazione SoftwareComponent .

È possibile specificare la direttiva AddSoftware una o più volte.

Nota

Quando si usa il tipo 2 della direttiva AddSoftware, non è necessario utilizzare un INF componente. La direttiva può essere usata correttamente in qualsiasi INF. Una direttiva AddSoftware di tipo 1, tuttavia, deve essere usata da un COMPONENTE INF.

Inoltre, qualsiasi corrispondenza INF (componente o meno) in un dispositivo componente software:

  • Può specificare i servizi utente Win32 usando la direttiva AddService.
  • Può installare software usando la direttiva INF AddReg e la direttiva INF CopyFiles.
  • Non richiede un servizio driver di funzione.
  • Può essere disinstallato dall'utente indipendentemente dal dispositivo padre.

È possibile trovare un esempio di componente INF nel toolkit di installazione dei pacchetti driver per i driver universali.

Nota: per il funzionamento di un dispositivo componente enumerato dal software, è necessario avviare il relativo elemento padre. Se non è disponibile alcun driver per il dispositivo padre, gli sviluppatori di driver possono creare i propri driver e, facoltativamente, sfruttare il driver pass-through "umpass.sys". Questo driver è incluso in Windows e, in modo efficace, non fa altro che avviare il dispositivo. Per usare umpass.sys, gli sviluppatori devono usare le direttive INF Include/Needs nella sezione DDInstall per ogni possibile sezione [DDInstall.*] alle sezioni [UmPass.*] corrispondenti, come illustrato di seguito, indipendentemente dal fatto che INF specifichi o meno le direttive per tale sezione:

[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

Accesso a un dispositivo da un componente software

Per recuperare l'ID istanza del dispositivo di un dispositivo associato a un componente software, usare il valore SoftwareArguments nella sezione della direttiva INF AddSoftware con la variabile di <<DeviceInstanceID>> contesto di runtime.

Il file eseguibile può quindi recuperare l'ID istanza del dispositivo del componente software dal relativo elenco di argomenti in ingresso.

Successivamente, se il componente software è destinato alla piattaforma di destinazione universale, seguire questa procedura:

  1. Chiamare CM_Locate_DevNode con l'ID istanza del dispositivo del componente software per recuperare un handle di dispositivo.
  2. Chiamare CM_Get_Parent per recuperare un handle all'elemento padre del dispositivo. Questo elemento padre è il dispositivo che ha aggiunto il componente software usando la direttiva INF AddComponent.
  3. Quindi, per recuperare l'ID istanza del dispositivo dell'elemento padre, chiamare CM_Get_Device_ID sull'handle da CM_Get_Parent.

Se il componente software è destinato solo alla piattaforma di destinazione desktop, seguire questa procedura:

  1. Chiama SetupDiCreateDeviceInfoList per creare un set di informazioni sul dispositivo vuoto.
  2. Chiamare SetupDiOpenDeviceInfo con l'ID istanza del dispositivo del componente software.
  3. Chiama SetupDiGetDeviceProperty con DEVPKEY_Device_Parent per recuperare l'ID istanza del dispositivo dell'elemento padre.

Esempio

Nell'esempio seguente viene illustrato come usare un componente software per installare un pannello di controllo usando un eseguibile per una scheda grafica.

File INF del pacchetto driver

[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"

File INF del componente software

[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"

Il processo di convalida e invio del driver è lo stesso per le funzioni INFS dei componenti, come per le normali funzioni INFS. Per altre info, vedi Introduzione a Windows HLK.

Per altre informazioni sulle classi di installazione, vedi Classi di installazione di dispositivi definite dal sistema disponibili per i fornitori.

Vedi anche

Direttiva INF AddComponent

Direttiva INF AddSoftware

Sezione INF DDInstall.Components

Sezione INF DDInstall.Software