Condividi tramite


Scrittura di programmi di installazione classi e Co-Installers

Nota

Le funzionalità descritte in questa sezione non sono supportate nei pacchetti di driver universali o mobili. Vedere Uso di un file INF universale.

Questa sezione contiene le linee guida da seguire quando si scrive un co-installer:

Visualizzazione di un'interfaccia utente

Salvataggio dello stato di installazione del dispositivo

Caricamento di file eseguibili o DLL

Avvio di altri processi o servizi

Per altre informazioni su come scrivere un co-installer, vedere Scrittura di un co-installer.

Visualizzazione di un'interfaccia utente

L'installazione del dispositivo viene eseguita principalmente in un servizio di sistema (noninterattivo). Pertanto, un utente non può visualizzare o rispondere a qualsiasi interfaccia utente visualizzata in questo contesto. Qualsiasi finestra di dialogo fornita nel co-installer durante l'elaborazione di un codice DIF (Device Installation Function) causa l'installazione del dispositivo per interrompere la risposta.

Nella maggior parte dei casi, i co-installer non devono interagire con l'utente tranne durante l'elaborazione di un'azione di installazione completa. Le azioni di installazione completa vengono eseguite in un contesto interattivo.

Nota I co-installer non devono avere esito negativo in un codice DIF con ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION perché causa l'esito negativo dell'installazione del dispositivo. Se l'installazione del dispositivo richiede l'interazione utente, i co-installer devono supportare azioni di installazione completa.

Salvataggio dello stato di installazione del dispositivo

Non salvare lo stato di installazione del dispositivo all'interno della libreria di collegamento dinamico del co-installer (DLL). Poiché Windows scarica in genere la DLL dopo che un codice DIF viene gestito dal programma di installazione, tutte le informazioni sullo stato salvate all'interno della DLL non verranno mantenute.

Per mantenere in modo sicuro lo stato del programma di installazione del dispositivo, i programmi di installazione delle classi o i co-installer devono salvare le informazioni sullo stato come proprietà all'interno della chiave del driver del dispositivo nel Registro di sistema. A questo scopo, seguire questa procedura:

  1. Per recuperare un handle del Registro di sistema nella chiave driver per un'istanza del dispositivo, usare SetupDiOpenDevRegKey con il parametro KeyType impostato su DIREG_DRV.

  2. Usare SetupDiGetDevicePropertyKeys (per recuperare tutte le chiavi delle proprietà per un'istanza del dispositivo) o SetupDiGetDeviceProperty (per recuperare una chiave di proprietà dell'istanza del dispositivo specificata).

  3. Usare SetupDiSetDeviceProperty per salvare la chiave della proprietà dell'istanza del dispositivo.

Caricamento di file eseguibili o DLL

Se il co-programma di installazione tenta di caricare un file eseguibile non firmato o una DLL in una piattaforma windows a 64 bit, i sistemi operativi impediscono il caricamento in questo ambiente sicuro.

Per caricare in modo sicuro un file eseguibile o una DLL da un programma di installazione di classe o da un co-programma di installazione, è consigliabile includere il file eseguibile o la DLL nel pacchetto driver con firma digitale. Per altre informazioni su come firmare i pacchetti driver, vedere Firma driver.

Nota I programmi di installazione delle classi e i co-installer non devono caricare moduli DLL tramite chiamate di funzione esplicite, ad esempio LoadLibrary o creando dipendenze di collegamento.

Avvio di altri processi o servizi

Durante l'installazione del dispositivo, Windows non può tenere traccia di processi aggiuntivi e non è in grado di determinare cosa stanno facendo o al termine. Ad esempio, Windows potrebbe avviare o arrestare il dispositivo o avviare un riavvio del sistema mentre il processo esegue un'azione critica.

Nella maggior parte dei casi, i co-installer non devono avviare altri processi o servizi. Tuttavia, i programmi di installazione possono avviare altri processi in modo sicuro chiamando CreateProcess da una funzione o un dialogo visualizzato tramite un'azione di installazione completa. Il programma di installazione non deve consentire all'utente di continuare nella finestra di dialogo o nella procedura fino all'uscita del processo creato.