Direttiva INF AddService

Nota

Questa direttiva non viene usata nei file INF che installano i dispositivi che non richiedono driver, ad esempio modem o monitor di visualizzazione.

Una direttiva AddService viene usata all'interno di una DDInstall INF. Sezione Servizi o sezione INF DefaultInstall.Services. Specifica le caratteristiche dei servizi associati ai driver, ad esempio come e quando i servizi vengono caricati e qualsiasi dipendenza da altri driver o servizi legacy sottostanti. Facoltativamente, questa direttiva configura anche i servizi di registrazione eventi per il dispositivo.

[DDInstall.Services] 
 
AddService=ServiceName,[flags],service-install-section
                     [,event-log-install-section[,[EventLogType][,EventName]]]
...

Voci

Servicename
Specifica il nome del servizio da installare. Il nome deve essere univoco abbastanza probabilmente in conflitto con un servizio installato da un file INF diverso. Ad esempio, il nome del servizio può includere una breve abbreviazione del nome della società come prefisso o suffisso. Questo nome non deve essere localizzato. Deve essere lo stesso indipendentemente dalla lingua locale del sistema.

flags
Specifica una o più (ORed) dei flag definiti dal sistema seguenti, definiti in Setupapi.h, espressi come valore esadecimale:

0x00000001 (SPSVCINST_TAGTOFRONT )
Spostare il tag del servizio denominato nella parte anteriore dell'elenco degli ordini di gruppo, assicurandosi quindi che venga caricato prima all'interno di tale gruppo (a meno che non sia stato installato successivamente un dispositivo con questa specifica INF lo sposta). I file INF che installano esclusivamente dispositivi e dispositivi PnP con driver WDM non devono impostare questo flag.

0x00000002 (SPSVCINST_ASSOCSERVICE )
Assegnare il servizio denominato come driver di funzione PnP (o driver legacy) per il dispositivo installato da questo file INF.

Per indicare che un servizio è il driver di funzione per un dispositivo, il servizio deve specificare il flag SPSVCINST_ASSOCSERVICE nella direttiva AddService . Per un servizio, ad esempio un driver di filtro o un altro componente driver, il flag non deve essere usato.

Ogni driver di dispositivo INF deve avere esattamente un servizio associato. INF non richiede un servizio associato se si tratta di un'estensione INF o usa le direttive Include/Needs per ereditare il servizio associato da un altro INF. Per i dispositivi che non richiedono un driver di funzione, è possibile specificare il driver NULL come servizio associato come segue:

AddService = ,2

0x00000008 (SPSVCINST_NOCLOBBER_DISPLAYNAME )
Non sovrascrivere il nome descrittivo (facoltativo) del servizio specificato se questo servizio esiste già nel sistema.

0x00000010 (SPSVCINST_NOCLOBBER_STARTTYPE )
Non sovrascrivere il tipo di avvio del servizio specificato se questo servizio denominato esiste già nel sistema.

0x00000020 (SPSVCINST_NOCLOBBER_ERRORCONTROL )
Non sovrascrivere il valore del controllo degli errori del servizio specificato se questo servizio denominato esiste già nel sistema.

0x00000040 (SPSVCINST_NOCLOBBER_LOADORDERGROUP )
Non sovrascrivere il valore di load-order-group del servizio specificato se questo servizio denominato esiste già nel sistema. I file INF che installano esclusivamente dispositivi e dispositivi PnP con driver WDM non devono impostare questo flag.

0x00000080 (SPSVCINST_NOCLOBBER_DEPENDENCIES )
Non sovrascrivere l'elenco delle dipendenze del servizio specificato se questo servizio denominato esiste già nel sistema. I file INF che installano esclusivamente dispositivi e dispositivi PnP con driver WDM non devono impostare questo flag.

0x00000100 (SPSVCINST_NOCLOBBER_DESCRIPTION )
Non sovrascrivere la descrizione (facoltativa) del servizio specificato se questo servizio esiste già nel sistema.

0x00000400 (SPSVCINST_CLOBBER_SECURITY ) (Windows XP e versioni successive di Windows)
Sovrascrivere le impostazioni di sicurezza per il servizio se questo servizio esiste già nel sistema.

0x00000800 (SPSVCSINST_STARTSERVICE ) (Windows Vista e versioni successive di Windows)
Avviare il servizio dopo l'installazione del servizio. Questo flag non può essere usato per avviare un servizio che implementa un driver di funzione Plug and Play (PnP) o un driver di filtro per un dispositivo. In caso contrario, questo flag può essere usato per avviare un servizio in modalità utente o in modalità kernel gestito da Service Control Manager (SCM).

0x00001000 (SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES ) (Windows 7 e versioni successive di Windows)
Non sovrascrivere i privilegi per il servizio specificato se questo servizio esiste già nel sistema.

0x00002000 (SPSVCINST_NOCLOBBER_TRIGGERS) (Windows 10 versione 2004 e versioni successive di Windows)
Non sovrascrivere i trigger per il servizio specificato se questo servizio esiste già nel sistema e ha trigger esistenti. Per altre informazioni sui trigger, vedere la direttiva AddTrigger seguente.

0x00004000 (SPSVCINST_NOCLOBBER_SERVICESIDTYPE) (Windows 10 versione 2004 e versioni successive di Windows)
Non sovrascrivere le informazioni SID per il servizio specificato se questo servizio esiste già nel sistema e dispone di informazioni SID esistenti. Per altre informazioni, vedere la direttiva ServiceSidType seguente.

0x00008000 (SPSVCINST_NOCLOBBER_DELAYEDAUTOSTART) (Windows 10 versione 2004 e versioni successive di Windows)
Non sovrascrivere il valore di avvio automatico ritardato per il servizio specificato se questo servizio esiste già nel sistema e ha un valore esistente. Per altre informazioni, vedere la direttiva DelayedAutoStart seguente.

0x00020000 (SPSVCINST_NOCLOBBER_FAILUREACTIONS) (Windows 11 versione 22H2 e versioni successive di Windows)
Non sovrascrivere le azioni di errore per il servizio specificato se questo servizio esiste già nel sistema e ha azioni di errore esistenti. Per altre informazioni sulle azioni di errore, vedere la direttiva FailureActions seguente.

0x00040000 (SPSVCINST_NOCLOBBER_BOOTFLAGS) (Windows 11 build 25381 e versioni successive di Windows) Non sovrascrivere il valore dei flag di avvio per il servizio specificato se questo servizio esiste già nel sistema e ha un valore esistente. Per altre informazioni, vedere la direttiva BootFlags seguente.

service-install-section
Fa riferimento a una sezione definita dal writer INF che contiene informazioni per l'installazione del servizio denominato per questo dispositivo (o dispositivi). Per altre informazioni, vedere la sezione Osservazioni seguenti.

event-log-install-section
Facoltativamente, fa riferimento a una sezione definita dal writer INF in cui vengono configurati i servizi di registrazione eventi per questo dispositivo (o dispositivi).

EventLogType
Facoltativamente, specifica uno di System, Security o Application. Se omesso, questa impostazione predefinita è System, che è quasi sempre il valore appropriato per l'installazione dei driver di dispositivo.

Ad esempio, un INF specifica sicurezza solo se il driver da installare fornisce il proprio supporto di sicurezza.

EventName
Facoltativamente specifica un nome da usare per il registro eventi. Se omesso, questo valore predefinito viene impostato su ServiceName specificato.

Commenti

Le estensioni senza distinzione tra maiuscole e minuscole definite dal sistema possono essere inserite in un DDInstall. Sezione Servizi che contiene una direttiva AddService nei file INF multipiattaforma e/o multipiattaforma per specificare installazioni specifiche della piattaforma o specifiche del sistema operativo.

Ogni nome di sezione creato da INF-writer deve essere univoco all'interno del file INF e deve seguire le regole generali per definire i nomi di sezione. Per altre informazioni su queste regole, vedere Regole di sintassi generali per i file INF.

Una direttiva AddService deve fare riferimento a una sezione denominata service-install-section altrove nel file INF. Ogni sezione di questo tipo ha il formato seguente:

[service-install-section]
 
[DisplayName=name]
[Description=description-string]
ServiceType=type-code
StartType=start-code
ErrorControl=error-control-level
ServiceBinary=path-to-service
[StartName=service-start-name]
[AddReg=add-registry-section[, add-registry-section] ...]
[DelReg=del-registry-section[, del-registry-section] ...]
[BitReg=bit-registry-section[,bit-registry-section] ...]
[LoadOrderGroup=load-order-group-name]
[Dependencies=depend-on-item-name[,depend-on-item-name]
[Security="security-descriptor-string"]...]
[RequiredPrivileges=privilege-name[,privilege-name]...] (Windows 7 and later versions of Windows)
[ServiceSidType=value] (Windows 10 Version 2004 and later versions of Windows)
[DelayedAutoStart=value] (Windows 10 Version 2004 and later versions of Windows)
[AddTrigger=service-trigger-install-section[, service-trigger-install-section, ...]] (Windows 10 Version 2004 and later versions of Windows)
[FailureActions=service-failure-actions-install-section] (Windows 11 version 22H2 and later versions of Windows)
[BootFlags=value] (Windows 11 build 25381 and later versions of Windows)

Ogni sezione di installazione del servizio deve avere almeno le voci ServiceType, StartType, ErrorControl e ServiceBinary, come illustrato di seguito. Tuttavia, le voci rimanenti sono facoltative.

Service-Install voci e valori della sezione

Displayname=Nome
Specifica un nome descrittivo per il servizio/driver, in genere, per facilità di localizzazione, espresso come token %strkey% definito in una sezione Strings del file INF.

Descrizione=description-string
Facoltativamente specifica una stringa che descrive il servizio, in genere espressa come token %strkey% definito in una sezione Strings del file INF.

Questa stringa fornisce all'utente altre informazioni sul servizio rispetto a DisplayName. Ad esempio, DisplayName potrebbe essere simile a "Client DHCP" e la descrizione potrebbe essere simile a "Gestisce la configurazione di rete registrando e aggiornando indirizzi IP e nomi DNS".

La stringa di descrizione deve essere abbastanza lunga da essere descrittiva, ma non a condizione che sia imbarazzante. Se una stringa di descrizione contiene qualsiasi token %strkey%, ogni token può rappresentare un massimo di 511 caratteri. La stringa totale, dopo eventuali sostituzioni dei token di stringa, non deve superare i 1024 caratteri.

Servicetype=type-code
Il codice di tipo per un driver di dispositivo in modalità kernel deve essere impostato su 0x00000001 (SERVICE_KERNEL_DRIVER).

Il codice di tipo per un servizio Microsoft Win32 installato per un dispositivo deve essere impostato su 0x00000010 (SERVICE_WIN32_OWN_PROCESS ) o 0x00000020 (SERVICE_WIN32_SHARE_PROCESS). Se il servizio Win32 può interagire con il desktop, il valore del codice di tipo deve essere combinato con 0x00000100 (SERVICE_INTERACTIVE_PROCESS ).

Il codice di tipo per un driver di rete di livello più alto, ad esempio un reindirizzamento o un driver di file system, deve essere impostato su 0x00000002 (SERVICE_FILE_SYSTEM_DRIVER ).

Le costanti SERVICE_xxxx sono definite in Wdm.h e Ntddk.h.

StartType=start-code
Specifica quando avviare il driver come uno dei valori numerici seguenti, espresso in decimale o, come illustrato nell'elenco seguente, in notazione esadecimale.

0x0 (SERVICE_BOOT_START)
Indica un driver avviato dal caricatore del sistema operativo.

Questo valore deve essere usato per i driver dei dispositivi necessari per il caricamento del sistema operativo.

0x1 (SERVICE_SYSTEM_START )
Indica un driver avviato durante l'inizializzazione del sistema operativo.

Questo valore deve essere usato dai driver PnP che eseguono il rilevamento dei dispositivi durante l'inizializzazione, ma non sono necessari per caricare il sistema.

Ad esempio, un driver PnP in grado di rilevare un dispositivo legacy deve specificare questo valore nel relativo INF in modo che la routine DriverEntry venga chiamata per trovare il dispositivo legacy, anche se tale dispositivo non può essere enumerato dal gestore PnP.

0x2 (SERVICE_AUTO_START)
Indica un servizio avviato dal gestore di controllo del servizio durante l'avvio del sistema.

Questo valore non deve mai essere usato nei file INF per i driver di dispositivo WDM o PnP.

0x3 (SERVICE_DEMAND_START)
Indica un servizio avviato su richiesta, dal gestore PnP quando il dispositivo corrispondente viene enumerato o possibilmente dal gestore di controllo del servizio in risposta a una richiesta esplicita dell'utente per un dispositivo non PnP.

Questo valore deve essere usato nei file INF per tutti i driver WDM dei dispositivi non necessari per caricare il sistema e per tutti i driver di dispositivo PnP che non sono né necessari per caricare il sistema né per il rilevamento dei dispositivi.

0x4 (SERVICE_DISABLED)
Indica un servizio che non può essere avviato.

Questo valore può essere usato per disabilitare temporaneamente i servizi driver per un dispositivo. Tuttavia, non è possibile installare un dispositivo/driver se questo valore viene specificato nella sezione installazione del servizio del relativo file INF.

Per altre informazioni su StartType, vedere Specifica dell'ordine di carico del driver.

ErrorControl=error-control-level
Specifica il livello di controllo degli errori come uno dei valori numerici seguenti, espresso in decimale o, come illustrato nell'elenco seguente, in notazione esadecimale.

0x0 (SERVICE_ERROR_IGNORE)
Se il driver non riesce a caricare o inizializzare, procedere con l'avvio del sistema e non visualizzare un avviso per l'utente.

0x1 (SERVICE_ERROR_NORMAL)
Se il driver non riesce a caricare o inizializzare il dispositivo, l'avvio del sistema deve procedere ma visualizzare un avviso per l'utente.

0x2 (SERVICE_ERROR_SEVERE)
Se il driver non viene caricato, l'avvio del sistema deve passare al set di controlli LastKnownGood del Registro di sistema e continuare l'avvio del sistema, anche se il driver indica di nuovo un errore di caricamento o inizializzazione del dispositivo/driver.

0x3 (SERVICE_ERROR_CRITICAL)
Se il driver non riesce a caricare e l'avvio del sistema non usa il set di controlli LastKnownGood del Registro di sistema, passare a LastKnownGood e riprovare.

Se l'avvio ha ancora esito negativo quando si usa LastKnownGood, eseguire una routine di controllo dei bug. (Solo i dispositivi/driver necessari per l'avvio del sistema specificano questo valore nei file INF.

ServiceBinary=path-to-service
Specifica il percorso del file binario per il servizio, espresso come %dirid%\filename.

Il numero dirid è un identificatore di directory personalizzato o uno degli identificatori di directory definiti dal sistema descritti in Uso di Dirids. Il nome file specificato specifica un file già trasferito (vedere la direttiva INF CopyFiles) dal supporto di distribuzione di origine a tale directory nel computer di destinazione.

StartName=service-start-name Questa voce facoltativa specifica un nome iniziale che deve essere associato al servizio. Se type-code specifica 1 (SERVICE_KERNEL_DRIVER) o 2 (SERVICE_FILE_SYSTEM_DRIVER), questo nome è il nome dell'oggetto driver usato dal gestore di I/O per caricare il driver. Se il codice di tipo contiene il 0x00000010 di bit (SERVICE_WIN32_OWN_PROCESS) o 0x00000020 (SERVICE_WIN32_SHARE_PROCESS), questo nome può essere uno dei valori validi per il parametro lpServiceStartName dell'API CreateService .

AddReg=add-registry-section[,add-registry-section]...
Fa riferimento a una o più sezioni del Registro di sistema definite dal writer INF in cui vengono configurate tutte le informazioni del Registro di sistema pertinenti ai servizi appena installati. Per altre informazioni, vedere Direttiva INF AddReg.

DelReg=del-registry-section[,del-registry-section]...
Fa riferimento a una o più sezioni INF-writer-defined del-registry-sections in cui vengono rimosse le informazioni pertinenti del Registro di sistema per un servizio già installato. Per altre informazioni, vedere Direttiva INF DelReg.

Questa direttiva non viene quasi mai usata in una sezione service-install-section, ma potrebbe essere usata in un INF che "aggiorna" il Registro di sistema per un'installazione precedente degli stessi servizi di dispositivo/driver.

BitReg=bit-registry-section[,bit-registry-section]...
È valido in una sezione service-install-section , ma quasi mai usato.

LoadOrderGroup=load-order-group-name
Questa voce facoltativa identifica il gruppo di ordini di carico di cui questo driver è membro. Può essere uno dei gruppi di ordini di carico "standard", ad esempio la classe SCSI o NDIS.

In generale, questa voce non è necessaria per i dispositivi con driver WDM o per dispositivi PnP esclusivamente, a meno che non siano presenti dipendenze legacy in un gruppo di questo tipo. Tuttavia, questa voce può essere utile se il rilevamento dei dispositivi è supportato caricando un gruppo di driver in un ordine specifico.

Per altre informazioni su LoadOrderGroup, vedere Specifica dell'ordine di carico del driver.

Dipendenze=depend-on-item-name[,depend-on-item-name]... Ogni elemento depend-on-item-name in un elenco delle dipendenze specifica il nome di un servizio o di un gruppo di ordini di carico da cui dipende il dispositivo/driver.

Se depend-on-item-name specifica un servizio, il servizio che deve essere in esecuzione prima dell'avvio del driver. Ad esempio, l'INF per i servizi di stampa TCP/IP forniti dal sistema dipende dal supporto dello stack di trasporto TCP/IP sottostante (modalità kernel). Di conseguenza, l'INF per i servizi di stampa TCP/IP specifica questa voce come Dependencies=TCPIP.

Un nome di tipo depend-on-item può specificare un gruppo di ordini di carico da cui dipende questo dispositivo/driver. Tale driver viene avviato solo se è stato avviato almeno un membro del gruppo specificato. Precedere il nome del gruppo con un segno più (+). Ad esempio, l'INF dei servizi RAS di sistema potrebbe avere una voce come Dependencies = +NetBIOSGroup,RpcSS che elenca sia un gruppo di ordini di carico che un servizio.

Security="security-descriptor-string"
Specifica un descrittore di sicurezza da applicare al servizio. Questo descrittore di sicurezza specifica le autorizzazioni necessarie per eseguire operazioni quali l'avvio, l'arresto e la configurazione del servizio. Il valore security-descriptor-string è una stringa con token per indicare il componente di sicurezza DACL (D:).

Per informazioni sulle stringhe del descrittore di sicurezza, vedere Security Descriptor Definition Language (Windows). Per informazioni sul formato delle stringhe del descrittore di sicurezza, vedere Security Descriptor Definition Language (Windows).

Per altre informazioni su come specificare i descrittori di sicurezza, vedere Creazione di installazioni di dispositivi protetti.

RequiredPrivileges=privilege-name[,privilege-name]...

Nota

Questo valore può essere usato solo per i servizi Win32 ed è disponibile solo in Windows 7 e versioni successive.

Ogni nome di privilegio nell'elenco è il nome di un privilegio richiesto dal servizio. Per un elenco dei nomi dei privilegi, vedere Costanti privilegio (Windows). Per ogni nome di privilegio, è necessario solo il nome di testo. Ad esempio, il nome del privilegio deve essere scritto come "SeAuditPrivilege" ma non SE_AUDIT_NAME.

Per altre informazioni sui privilegi necessari per il servizio, vedere SERVICE_REQUIRED_PRIVILEGES_INFO (Windows).For more information on service required privileges, see SERVICE_REQUIRED_PRIVILEGES_INFO (Windows).

ServiceSidType=Valore

Nota

Questo valore può essere usato solo per i servizi Win32 ed è disponibile solo con Windows 10 versione 2004 e successive.

Questa voce può usare qualsiasi valore valido come descritto in SERVICE_SID_INFO.

DelayedAutoStart=Valore

Nota

Questo valore può essere usato solo per i servizi Win32 ed è disponibile solo con Windows 10 2004 e versioni successive.

Contiene l'impostazione di avvio automatico ritardato di un servizio di avvio automatico.

Se questo membro è 0x0, il servizio viene avviato durante l'avvio del sistema. In caso contrario, il servizio viene avviato dopo l'avvio automatico di altri servizi e un breve ritardo.

Questa impostazione viene ignorata a meno che il servizio non sia un servizio di avvio automatico.

Per altre informazioni, vedere questa pagina.

AddTrigger=service-trigger-install-section [, service-trigger-install-section, ...]
Specifica gli eventi trigger da registrare per il servizio Win32 in modo che il servizio possa essere avviato o arrestato quando si verifica un evento trigger. Per altre informazioni sugli eventi trigger del servizio, vedere Eventi trigger di servizio.

Ogni sezione service-trigger-install-section denominata a cui fa riferimento una direttiva AddTrigger ha il formato seguente:

[service-trigger-install-section]

TriggerType=trigger-type
Action=action-type
SubType=trigger-subtype
[DataItem=data-type,data]
...

BootFlags=Valore

Nota

Questo valore può essere usato solo con i servizi driver in modalità kernel ed è disponibile solo con Windows 11 build 25381 e versioni successive.

Facoltativamente specifica quando il sistema operativo deve alzare di livello il valore StartType di un driver a 0x0 (SERVICE_BOOT_START). È possibile specificare uno o più valori (ORed) dei valori numerici seguenti, espressi come valori esadecimali.

  • 0x1 (CM_SERVICE_NETWORK_BOOT_LOAD) Indica che il driver deve essere alzato di livello se si avvia dalla rete.

  • 0x2 (CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD) Indica che il driver deve essere alzato di livello se si esegue l'avvio da un disco rigido virtuale.

  • 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD)
    Indica che il driver deve essere promosso in caso di avvio da un disco USB.

  • 0x8 (CM_SERVICE_SD_DISK_BOOT_LOAD)
    Indica che il driver deve essere promosso se si esegue l'avvio dall'archiviazione SD.

  • 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD)
    Indica che il driver deve essere promosso se si avvia da un disco in un controller USB 3.0.

  • 0x20 (CM_SERVICE_MEASURED_BOOT_LOAD) Indica che il driver deve essere promosso se l'avvio durante l'avvio è abilitato.

  • 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD)
    Indica che il driver deve essere promosso se l'avvio con l'avvio del verificatore abilitato.

  • 0x80 (CM_SERVICE_WINPE_BOOT_LOAD)
    Indica che il driver deve essere promosso se si avvia winPE.

Voci e valori di Service-Trigger-Install-Section

TriggerType=trigger-type
Specifica il tipo di evento trigger del servizio in uno dei valori numerici seguenti, espresso in decimale o, come illustrato nell'elenco seguente, notazione esadecimale:

0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL )
Indica che l'evento viene attivato quando un dispositivo della classe di interfaccia del dispositivo specificato arriva o è presente all'avvio del sistema.

Per altre informazioni, vedere struttura SERVICE_TRIGGER.

Azione=tipo di azione
Specifica l'azione da eseguire quando si verifica l'evento trigger specificato.

0x1 (SERVICE_TRIGGER_ACTION_SERVICE_START )
Avviare il servizio quando si verifica l'evento trigger specificato.

0x2 (SERVICE_TRIGGER_ACTION_SERVICE_STOP )
Arrestare il servizio quando si verifica l'evento trigger specificato.

Per altre informazioni, vedere struttura SERVICE_TRIGGER.

Sottotipo=trigger-subtype
Specifica un GUID che identifica il sottotipo di evento trigger. Il valore dipende dal valore di TriggerType.

Quando TriggerType è 0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL ), SubType specifica il GUID che identifica la classe dell'interfaccia del dispositivo.

Per altre informazioni, vedere struttura SERVICE_TRIGGER.

Dataitem=tipo di dati, dati
Facoltativamente specifica i dati specifici del trigger per un evento trigger del servizio.

Quando TriggerType è 0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL ), un oggetto DataItem facoltativo può essere specificato con un tipo di dati di 0x2 (SERVICE_TRIGGER_DATA_TYPE_STRING ) per definire l'ambito della classe dell'interfaccia del dispositivo a un ID hardware o un ID compatibile specifico.

Per altre informazioni, vedere struttura SERVICE_TRIGGER_SPECIFIC_DATA_ITEM

La procedura consigliata per l'uso della direttiva AddTrigger consiste nel attivare l'avvio del servizio all'arrivo dell'interfaccia del dispositivo. Per altre informazioni, vedere Interazione di Servizi Win32 con dispositivi.

Nota

La sintassi AddTrigger è disponibile solo in Windows 10 versione 2004 e avanti.

FailureActions=service-failure-actions-install-section
Facoltativamente, specifica l'azione che il controller di servizio deve eseguire quando un servizio ha esito negativo.

Il gestore del controllo del servizio conta il numero di volte in cui ogni servizio non è riuscito dopo l'avvio del sistema. Il conteggio viene reimpostato su 0 se il servizio non è riuscito per i secondi di reimpostazione. Quando il servizio ha esito negativo per il Nth time, il controller di servizio esegue l'azione specificata nell'elemento N dell'elenco Azioni. Se N è maggiore del numero di azioni, il controller di servizio ripete l'ultima azione nell'elenco.

La sezione service-failure-actions-install-referenced da una direttiva FailureActions ha il formato seguente:

[service-failure-actions-install-section]

[ResetPeriod=reset-period]
[NonCrashFailures=value]
Action=failure-action-type,delay
[Action=failure-action-type,delay]
...

Voci e valori della sezione Service-Failure-Actions-Install-Section

ResetPeriod=reimpostazione del periodo
Specifica l'ora dopo la quale reimpostare il conteggio degli errori su zero se non sono presenti errori, in secondi. Il numero di errori non viene reimpostato per impostazione predefinita quando non viene specificato un periodo di reimpostazione.

Per altre informazioni, vedere SERVICE_FAILURE_ACTIONSW struttura.

NonCrashFailures=Valore
Contiene l'impostazione del flag delle azioni di errore di un servizio. L'impostazione determina quando devono essere eseguite azioni di errore. Un valore di 0x0 indica False e un valore di 0x1 indica True.

Per altre informazioni, vedere SERVICE_FAILURE_ACTIONS_FLAG struttura (winsvc.h).

Azione=tipo di azione di errore, ritardo
Specifica un'azione che può essere eseguita dalla gestione controllo del servizio. Più voci azione formano un elenco ordinato di azioni di errore. Per altre informazioni, vedere SC_ACTION struttura.

Nota

La sintassi failureActions può essere usata solo per i servizi Win32 ed è disponibile a partire da Windows 11 versione 22H2.

Specifica dell'ordine di carico del driver

Il sistema operativo carica i driver in base al valore StartType della sezione di installazione del servizio, come indicato di seguito:

  • Durante la fase di avvio, il sistema operativo carica tutti i driver 0x0 (SERVICE_BOOT_START ).

  • Durante la fase di avvio del sistema, il sistema operativo carica prima tutti i driver WDM e PnP per i quali il gestore PnP individua i nodi del dispositivo (devnodes) (se i file INF specificano 0x01 per SERVICE_SYSTEM_START o 0x03 per SERVICE_DEMAND_START). Quindi il sistema operativo carica tutti i driver di SERVICE_SYSTEM_START rimanenti.

  • Durante la fase di avvio automatico, il sistema operativo carica tutti i driver rimanenti SERVICE_AUTO_START.

Per altre informazioni sulle dipendenze, vedere Specifica dell'ordine di carico del driver.

Promozione di StartType di un driver all'avvio a seconda dello scenario di avvio

A seconda dello scenario di avvio, è possibile usare il valore del Registro di sistema BootFlags per controllare quando il sistema operativo deve promuovere il valore StartType di un driver per 0x0 (SERVICE_BOOT_START). È possibile specificare uno o più (ORed) dei valori numerici seguenti, espressi come valore esadecimale:

  • 0x1 (CM_SERVICE_NETWORK_BOOT_LOAD) indica che il driver deve essere promosso se si avvia dalla rete.

  • 0x2 (CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD) indica che il driver deve essere promosso se si avvia da un disco rigido virtuale.

  • 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD) indica che il driver deve essere promosso in caso di avvio da un disco USB.

  • 0x8 (CM_SERVICE_SD_DISK_BOOT_LOAD) indica che il driver deve essere promosso se si esegue l'avvio dall'archiviazione SD.

  • 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD) indica che il driver deve essere promosso se si avvia da un disco in un controller USB 3.0.

  • 0x20 (CM_SERVICE_MEASURED_BOOT_LOAD) indica che il driver deve essere promosso se l'avvio durante l'avvio è abilitato.

  • 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD) indica che il driver deve essere promosso se l'avvio con l'avvio con l'avvio del classificatore abilitato.

  • 0x80 (CM_SERVICE_WINPE_BOOT_LOAD) indica che il driver deve essere promosso se si avvia winPE.

La sezione service-install-section contiene il modulo generale seguente:

[service-install-section]
AddReg=add-registry-section
...

[add-registry-section]
HKR,,BootFlags,0x00010003,0x14 ; CM_SERVICE_USB3_DISK_BOOT_LOAD|CM_SERVICE_USB_DISK_BOOT_LOAD

Nota

Questa sintassi deve essere usata solo nelle versioni di Windows e nelle build precedenti a Windows 11 build 25381; per Windows 11 build 25381 e versioni successive, usare la direttiva BootFlags.

Registrazione per la registrazione eventi

Una direttiva AddService può anche fare riferimento a una sezione event-log-install-section altrove nel file INF. Ogni sezione di questo tipo ha il formato seguente:

[event-log-install-section]
 
AddReg=add-registry-section[, add-registry-section]...
[DelReg=del-registry-section[, del-registry-section]...] 
[BitReg=bit-registry-section[,bit-registry-section]...]
 ...

Per un file INF tipico del dispositivo/driver, la sezione event-log-install-install-usa solo la direttiva AddReg per configurare un file di messaggio di registrazione eventi per il driver. Questa sezione del componente aggiuntivo per la registrazione eventi presenta il modulo generale seguente:

[drivername_EventLog_AddReg]
HKR,,EventMessageFile,0x00020000,"path\IoLogMsg.dll;path\driver.sys"
HKR,,TypesSupported,0x00010001,7 

In particolare, la sezione aggiunge due voci di valore nella sottochiave del Registro di sistema creata per il dispositivo/driver, come indicato di seguito:

  • La voce valore denominata EventMessageFile è di tipo REG_EXPAND_SZ, come specificato dal valore FLG_ADDREG_TYPE_EXPAND_SZ 0x00020000. Il valore, racchiuso tra virgolette doppie ("), associa l' IoLogMsg.dll fornito dal sistema (ma potrebbe associare un'altra DLL di registrazione) al file binario del driver. In genere, i percorsi di ognuno di questi file vengono specificati come indicato di seguito:

    %%SystemRoot%%\System32\IoLogMsg.dll

    %%SystemRoot%%\System32\drivers\driver.sys

  • La voce valore denominata TypesSupported è di tipo REG_DWORD, come specificato dal valore FLG_ADDREG_TYPE_DWORD 0x00010001.

    Per i driver, questo valore deve essere 7. Questo valore equivale all'OR bit per bit di EVENTLOG_SUCCESS, EVENTLOG_ERROR_TYPE, EVENTLOG_WARNING_TYPE e EVENTLOG_INFORMATION_TYPE, senza impostare i bit di EVENTLOG_AUDIT__XXX_.

Una sezione event-log-install-section può anche usare la direttiva DelReg per rimuovere un file di messaggi di log eventi installato in precedenza, eliminando in modo esplicito le voci di valore EventMessageFile e TypesSupported esistenti, se un file binario del driver viene sostituito da un driver appena installato. Vedere anche direttiva INF DelService.

Anche se una direttiva BitReg è valida anche all'interno di unasezioneinF-writer-defined event-log-install-, viene quasi mai usata, perché le voci di valore standard per la registrazione eventi driver di dispositivo non sono mascherate bit.

Esempio

In questo esempio vengono visualizzate le sezioni di installazione del servizio e di installazione del log eventi a cui fa riferimento la direttiva AddService come già illustrato in precedenza nell'esempio per DDInstall. Servizi.

[Example_DDInstall.Services]
AddService=ExampleFunctionDriver,0x00000002,function_ServiceInstallSection
AddService=ExampleUpperFilter,,filter_ServiceInstallSection

[function_ServiceInstallSection]
DisplayName    = %function_ServiceDesc%
ServiceType    = 1
StartType      = 3
ErrorControl   = 1
ServiceBinary  = %13%\ExampleFunctionDriver.sys

[function_EventLogInstallSection]
AddReg = function_EventLog_AddReg

[function_EventLog_AddReg]
;
; Following entry on single line in INF file. Enclosing quotation marks 
; prevent the semicolon from being interpreted as a comment.
;
HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll;
       %13%\ExampleFunctionDriver.sys"
HKR,,TypesSupported,0x00010001,7

[filter_ServiceInstallSection]
DisplayName    = %filter_ServiceDesc%
ServiceType    = 1
StartType      = 3
ErrorControl   = 1
ServiceBinary  = %13%\ExampleUpperFilter.sys

[Strings] ; only immediately preceding %strkey% tokens shown here
%function_ServiceDesc%="Example function driver service"
%filter_ServiceDesc%="Example filter driver service"

Vedi anche