INF-AddService-Direktive

Hinweis

Diese Direktive wird nicht in INF-Dateien verwendet, die Geräte installieren, die keine Treiber erfordern, z. B. Modems oder Bildschirme.

Eine AddService-Direktive wird in einem INF DDInstall verwendet. Abschnitt "Dienste" oder "INF DefaultInstall.Services". Es gibt Merkmale der Dienste an, die Treibern zugeordnet sind, z. B. wie und wann die Dienste geladen werden, sowie alle Abhängigkeiten von anderen zugrunde liegenden Legacytreibern oder -diensten. Optional richtet diese Richtlinie auch Ereignisprotokollierungsdienste für das Gerät ein.

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

Einträge

ServiceName
Gibt den Namen des zu installierenden Diensts an. Der Name sollte eindeutig genug sein, sodass es unwahrscheinlich ist, dass ein Von einer anderen INF-Datei installierter Dienst in Konflikt steht. Beispielsweise könnte der Dienstname eine kurze Abkürzung Ihres Firmennamens als Präfix oder Suffix enthalten. Dieser Name darf nicht lokalisiert werden. Es muss unabhängig von der lokalen Sprache des Systems identisch sein.

flags
Gibt einen oder mehrere (ORed) der folgenden systemdefinierten Flags an, die in Setupapi.h definiert sind, ausgedrückt als Hexadezimalwert:

0x00000001 (SPSVCINST_TAGTOFRONT)
Verschieben Sie das Tag des benannten Diensts an den Anfang der Gruppenreihenfolgeliste, wodurch sichergestellt wird, dass es zuerst innerhalb dieser Gruppe geladen wird (es sei denn, ein anschließend installiertes Gerät mit dieser INF-Spezifikation verschiebt sie). INF-Dateien, die ausschließlich PnP-Geräte und -Geräte mit WDM-Treibern installieren, sollten dieses Flag nicht festlegen.

0x00000002 (SPSVCINST_ASSOCSERVICE)
Weisen Sie den benannten Dienst als PnP-Funktionstreiber (oder Legacytreiber) für das Gerät zu, das von dieser INF-Datei installiert wird.

Um anzugeben, dass ein Dienst der Funktionstreiber für ein Gerät ist, sollte der Dienst das SPSVCINST_ASSOCSERVICE Flag in der AddService-Direktive angeben. Für einen Dienst, z. B. einen Filtertreiber oder eine andere Treiberkomponente, sollte das Flag nicht verwendet werden.

Jeder Gerätetreiber INF sollte genau einen zugeordneten Dienst aufweisen. Der INF erfordert keinen zugeordneten Dienst, wenn es sich um eine Erweiterungs-INF handelt oder die Include/Needs-Direktiven verwendet, um den zugeordneten Dienst von einem anderen INF zu erben. Für Geräte, die keinen Funktionstreiber benötigen, kann der NULL-Treiber wie folgt als zugeordneter Dienst angegeben werden:

AddService = ,2

0x00000008 (SPSVCINST_NOCLOBBER_DISPLAYNAME)
Überschreiben Sie den (optionalen) Anzeigenamen des angegebenen Diensts nicht, wenn dieser Dienst bereits im System vorhanden ist.

0x00000010 (SPSVCINST_NOCLOBBER_STARTTYPE)
Überschreiben Sie nicht den Starttyp des angegebenen Diensts, wenn dieser benannte Dienst bereits im System vorhanden ist.

0x00000020 (SPSVCINST_NOCLOBBER_ERRORCONTROL)
Überschreiben Sie den Fehlersteuerungswert des angegebenen Diensts nicht, wenn dieser benannte Dienst bereits im System vorhanden ist.

0x00000040 (SPSVCINST_NOCLOBBER_LOADORDERGROUP)
Überschreiben Sie den Lastenreihenfolge-Gruppenwert des angegebenen Diensts nicht, wenn dieser benannte Dienst bereits im System vorhanden ist. INF-Dateien, die ausschließlich PnP-Geräte und -Geräte mit WDM-Treibern installieren, sollten dieses Flag nicht festlegen.

0x00000080 (SPSVCINST_NOCLOBBER_DEPENDENCIES)
Überschreiben Sie die Abhängigkeitsliste des angegebenen Diensts nicht, wenn dieser benannte Dienst bereits im System vorhanden ist. INF-Dateien, die ausschließlich PnP-Geräte und -Geräte mit WDM-Treibern installieren, sollten dieses Flag nicht festlegen.

0x00000100 (SPSVCINST_NOCLOBBER_DESCRIPTION)
Überschreiben Sie die (optionale) Beschreibung des angegebenen Diensts nicht, wenn dieser Dienst bereits im System vorhanden ist.

0x00000400 (SPSVCINST_CLOBBER_SECURITY) (Windows XP und höhere Versionen von Windows)
Überschreiben Sie die Sicherheitseinstellungen für den Dienst, wenn dieser Dienst bereits im System vorhanden ist.

0x00000800 (SPSVCSINST_STARTSERVICE) (Windows Vista und höhere Versionen von Windows)
Starten Sie den Dienst nach der Installation des Diensts. Dieses Flag kann nicht verwendet werden, um einen Dienst zu starten, der einen Plug & Play (PnP)-Funktionstreiber oder Filtertreiber für ein Gerät implementiert. Andernfalls kann dieses Flag verwendet werden, um einen Benutzermodus- oder Kernelmodusdienst zu starten, der vom Dienststeuerungs-Manager (Service Control Manager, SCM) verwaltet wird.

0x00001000 (SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES) (Windows 7 und höhere Versionen von Windows)
Überschreiben Sie die Berechtigungen für den angegebenen Dienst nicht, wenn dieser Dienst bereits im System vorhanden ist.

0x00002000 (SPSVCINST_NOCLOBBER_TRIGGERS) (Windows 10 Version 2004 und neuere Versionen von Windows)
Überschreiben Sie die Trigger für den angegebenen Dienst nicht, wenn dieser Dienst bereits im System vorhanden ist und über vorhandene Trigger verfügt. Weitere Informationen zu Triggern finden Sie weiter unten in der AddTrigger-Direktive.

0x00004000 (SPSVCINST_NOCLOBBER_SERVICESIDTYPE) (Windows 10 Version 2004 und höhere Versionen von Windows)
Überschreiben Sie die SID-Informationen für den angegebenen Dienst nicht, wenn dieser Dienst bereits im System vorhanden ist und über vorhandene SID-Informationen verfügt. Weitere Informationen finden Sie in der ServiceSidType-Direktive weiter unten.

0x00008000 (SPSVCINST_NOCLOBBER_DELAYEDAUTOSTART) (Windows 10 Version 2004 und höhere Versionen von Windows)
Überschreiben Sie den verzögerten automatischen Startwert für den angegebenen Dienst nicht, wenn dieser Dienst bereits im System vorhanden ist und einen vorhandenen Wert aufweist. Weitere Informationen finden Sie in der DelayedAutoStart-Direktive weiter unten.

0x00020000 (SPSVCINST_NOCLOBBER_FAILUREACTIONS) (Windows 11 Version 22H2 und neuere Versionen von Windows)
Überschreiben Sie die Fehleraktionen für den angegebenen Dienst nicht, wenn dieser Dienst bereits im System vorhanden ist und über vorhandene Fehleraktionen verfügt. Weitere Informationen zu Fehleraktionen finden Sie unten in der FailureActions-Direktive.

0x00040000 (SPSVCINST_NOCLOBBER_BOOTFLAGS) (Windows 11 Build 25398 und neuere Versionen von Windows) Überschreiben Sie den Startflaggenwert für den angegebenen Dienst nicht, wenn dieser Dienst bereits im System vorhanden ist und über einen vorhandenen Wert verfügt. Weitere Informationen finden Sie in der BootFlags-Direktive weiter unten.

Dienstinstallationsabschnitt
Verweist auf einen INF-Writer-definierten Abschnitt, der Informationen zum Installieren des benannten Diensts für dieses Gerät (oder Geräte) enthält. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise ".

event-log-install-section
Verweist optional auf einen INF-writer-definierten Abschnitt, in dem Ereignisprotokollierungsdienste für dieses Gerät (oder Geräte) eingerichtet sind.

EventLogType
Gibt optional eine von System, Sicherheit oder Anwendung an. Wenn dieser Wert nicht angegeben wird, ist dies standardmäßig auf "System" festgelegt, was fast immer der geeignete Wert für die Installation von Gerätetreibern ist.

Ein INF würde beispielsweise " Sicherheit " nur angeben, wenn der vom to-beinstallierte Treiber eine eigene Sicherheitsunterstützung bereitstellt.

EventName
Gibt optional einen Namen an, der für das Ereignisprotokoll verwendet werden soll. Wenn dieser Wert nicht angegeben wird, wird dieser Standardwert für den angegebenen ServiceName verwendet.

Bemerkungen

Die vom System definierten Erweiterungen und die Groß-/Kleinschreibung können in ein DDInstall eingefügt werden. Abschnitt "Dienste", der eine AddService-Direktive in betriebssystemübergreifenden und/oder plattformübergreifenden INF-Dateien enthält, um plattformspezifische oder betriebssystemspezifische Installationen anzugeben.

Jeder inF-Writer erstellte Abschnittsname muss innerhalb der INF-Datei eindeutig sein und muss den allgemeinen Regeln zum Definieren von Abschnittsnamen entsprechen. Weitere Informationen zu diesen Regeln finden Sie unter Allgemeine Syntaxregeln für INF-Dateien.

Eine AddService-Direktive muss an anderer Stelle in der INF-Datei auf einen benannten Dienstinstallationsabschnitt verweisen. Jeder dieser Abschnitte weist das folgende Formular auf:

[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 25398 and later versions of Windows)

Jeder Dienstinstallationsabschnitt muss mindestens über die Einträge "ServiceType", "StartType", "ErrorControl" und "ServiceBinary " verfügen, wie hier gezeigt. Die verbleibenden Einträge sind jedoch optional.

Service-Install Abschnittseinträge und -werte

DisplayName=Name
Gibt einen Anzeigenamen für den Dienst/Treiber an, in der Regel für die einfache Lokalisierung, ausgedrückt als %strkey% Token definiert in einem Zeichenfolgenabschnitt der INF-Datei.

Beschreibung=description-string
Gibt optional eine Zeichenfolge an, die den Dienst beschreibt, in der Regel als %strkey% Token definiert in einem Zeichenfolgenabschnitt der INF-Datei.

Diese Zeichenfolge gibt dem Benutzer mehr Informationen zum Dienst als dem DisplayName. Der DisplayName kann z. B. etwa "DHCP-Client" sein, und die Beschreibung könnte etwa "Verwaltet die Netzwerkkonfiguration durch Registrieren und Aktualisieren von IP-Adressen und DNS-Namen" sein.

Die Beschreibungszeichenfolge sollte lang genug sein, um beschreibend zu sein, aber nicht so lange, bis sie ungünstig ist. Wenn eine Beschreibungszeichenfolge %Strkey -% Token enthält, kann jedes Token maximal 511 Zeichen darstellen. Die Gesamtzeichenfolge sollte nach jeder Ersetzung von Zeichenfolgentoken 1024 Zeichen nicht überschreiten.

ServiceType=Typcode
Der Typcode für einen Kernelmodusgerätetreiber muss auf 0x00000001 (SERVICE_KERNEL_DRIVER) festgelegt werden.

Der Typcode für einen Microsoft Win32-Dienst, der für ein Gerät installiert ist, sollte auf 0x00000010 (SERVICE_WIN32_OWN_PROCESS) oder 0x00000020 (SERVICE_WIN32_SHARE_PROCESS) festgelegt werden. Wenn der Win32-Dienst mit dem Desktop interagieren kann, sollte der Typcodewert mit 0x00000100 ( SERVICE_INTERACTIVE_PROCESS ) kombiniert werden.

Der Typcode für einen Netzwerktreiber der höchsten Ebene, z. B. ein Umleitungsmodul oder ein Dateisystemtreiber, sollte auf 0x00000002 (SERVICE_FILE_SYSTEM_DRIVER) festgelegt werden.

Die SERVICE_xxxx Konstanten werden in Wdm.h und Ntddk.h definiert.

StartType=Startcode
Gibt an, wann der Treiber als einer der folgenden numerischen Werte gestartet werden soll, ausgedrückt entweder in dezimal oder, wie in der folgenden Liste dargestellt, in hexadezimaler Schreibweise.

0x0 (SERVICE_BOOT_START)
Gibt einen Treiber an, der vom Betriebssystemladeprogramm gestartet wurde.

Dieser Wert muss für Treiber von Geräten verwendet werden, die zum Laden des Betriebssystems erforderlich sind.

0x1 (SERVICE_SYSTEM_START)
Gibt an, dass ein Treiber während der Betriebssysteminitialisierung gestartet wurde.

Dieser Wert sollte von PnP-Treibern verwendet werden, die die Geräteerkennung während der Initialisierung durchführen, aber nicht zum Laden des Systems erforderlich sind.

Beispielsweise sollte ein PnP-Treiber, der auch ein älteres Gerät erkennen kann, diesen Wert in seinem INF angeben, sodass seine DriverEntry-Routine aufgerufen wird, um das Legacygerät zu finden, auch wenn dieses Gerät nicht vom PnP-Manager aufgezählt werden kann.

0x2 (SERVICE_AUTO_START)
Gibt einen Dienst an, der vom Dienststeuerungs-Manager während des Systemstarts gestartet wurde.

Dieser Wert sollte niemals in den INF-Dateien für WDM- oder PnP-Gerätetreiber verwendet werden.

0x3 (SERVICE_DEMAND_START)
Gibt an, dass ein Dienst bei Bedarf gestartet wurde, entweder vom PnP-Manager, wenn das entsprechende Gerät aufgezählt wird oder möglicherweise vom Dienststeuerungs-Manager als Reaktion auf eine explizite Benutzernachfrage für ein Nicht-PnP-Gerät aufgezählt wird.

Dieser Wert sollte in den INF-Dateien für alle WDM-Treiber von Geräten verwendet werden, die nicht zum Laden des Systems und für alle PnP-Gerätetreiber erforderlich sind, die weder zum Laden des Systems noch zur Geräteerkennung erforderlich sind.

0x4 (SERVICE_DISABLED)
Gibt einen Dienst an, der nicht gestartet werden kann.

Dieser Wert kann verwendet werden, um die Treiberdienste für ein Gerät vorübergehend zu deaktivieren. Ein Gerät/Treiber kann jedoch nicht installiert werden, wenn dieser Wert im Abschnitt "Dienstinstallation" der INF-Datei angegeben ist.

Weitere Informationen zu StartType finden Sie unter Angeben der Treiberladereihenfolge.

ErrorControl=Fehlersteuerungsebene
Gibt die Ebene der Fehlersteuerung als einen der folgenden numerischen Werte an, ausgedrückt entweder in dezimal oder, wie in der folgenden Liste dargestellt, in hexadezimaler Schreibweise.

0x0 (SERVICE_ERROR_IGNORE)
Wenn der Treiber nicht geladen oder initialisiert werden kann, fahren Sie mit dem Systemstart fort und zeigen dem Benutzer keine Warnung an.

0x1 (SERVICE_ERROR_NORMAL)
Wenn der Treiber das Gerät nicht lädt oder initialisiert, sollte der Systemstart fortgesetzt werden, dem Benutzer jedoch eine Warnung anzeigen.

0x2 (SERVICE_ERROR_SEVERE)
Wenn der Treiber nicht geladen werden kann, sollte der Systemstart zum LastKnownGood-Steuerelementsatz der Registrierung wechseln und den Systemstart fortsetzen, auch wenn der Treiber erneut auf einen Lade- oder Geräte-/Treiberinitialisierungsfehler hinweist.

0x3 (SERVICE_ERROR_CRITICAL)
Wenn der Treiber nicht geladen werden kann und der Systemstart nicht den LastKnownGood-Steuerelementsatz der Registrierung verwendet, wechseln Sie zu LastKnownGood , und versuchen Sie es erneut.

Wenn der Start bei der Verwendung von LastKnownGood weiterhin fehlschlägt, führen Sie eine Fehlerüberprüfungsroutine aus. (Nur Geräte/Treiber, die zum Starten des Systems erforderlich sind, geben diesen Wert in ihren INF-Dateien an.)

ServiceBinary=Pfad-zu-Dienst
Gibt den Pfad der Binärdatei für den Dienst an, ausgedrückt als %dirid%\filename.

Die Dirid-Nummer ist entweder ein benutzerdefinierter Verzeichnisbezeichner oder eine der systemdefinierte Verzeichnisbezeichner, die unter Verwendung von Dirids beschrieben werden. Der angegebene Dateiname gibt eine Datei an, die bereits aus dem Quellverteilungsmedium (siehe INF CopyFiles-Direktive) an dieses Verzeichnis auf dem Zielcomputer übertragen wurde.

StartName=Dienststartname Dieser optionale Eintrag gibt einen Startnamen an, der dem Dienst zugeordnet werden soll. Wenn Typcode 1 (SERVICE_KERNEL_DRIVER) oder 2 (SERVICE_FILE_SYSTEM_DRIVER) angibt, ist dieser Name der Treiberobjektname, den der E/A-Manager zum Laden des Treibers verwendet. Wenn Typcode den Bit-0x00000010 (SERVICE_WIN32_OWN_PROCESS) oder 0x00000020 (SERVICE_WIN32_SHARE_PROCESS ) enthält, kann dieser Name einer der gültigen Werte für den lpServiceStartName-Parameter der CreateService-API sein.

AddReg=add-registry-section[,add-registry-section]...
Verweist auf einen oder mehrere inF-writer-definierte Add-Registry-Abschnitte , in denen alle Registrierungsinformationen eingerichtet werden, die für die neu installierten Dienste relevant sind. Weitere Informationen finden Sie unter INF AddReg-Direktive.

DelReg=del-registry-section[,del-registry-section]...
Verweist auf einen oder mehrere INF-writer-defined del-registry-sections , in denen relevante Registrierungsinformationen für bereits installierte Dienste entfernt werden. Weitere Informationen finden Sie unter INF DelReg-Direktive.

Diese Direktive wird fast nie in einem Dienstinstallationsbereich verwendet, kann aber in einem INF verwendet werden, das die Registrierung für eine vorherige Installation derselben Geräte-/Treiberdienste "aktualisiert".

BitReg=bit-registry-section[,bit-registry-section]...
Ist in einem Dienstinstallationsabschnitt gültig, wird aber fast nie verwendet.

LoadOrderGroup=Load-order-group-name
Dieser optionale Eintrag gibt die Ladereihenfolgegruppe an, der dieser Treiber Mitglied ist. Dabei kann es sich um eine der Standardmäßigen Ladereihenfolgegruppen handeln, z. B. die SCSI-Klasse oder NDIS.

Im Allgemeinen ist dieser Eintrag für Geräte mit WDM-Treibern oder ausschließlich für PnP-Geräte unnötig, es sei denn, es gibt Legacyabhängigkeiten für eine solche Gruppe. Dieser Eintrag kann jedoch hilfreich sein, wenn die Geräteerkennung durch Laden einer Gruppe von Treibern in einer bestimmten Reihenfolge unterstützt wird.

Weitere Informationen zu LoadOrderGroup finden Sie unter Angeben der Treiberladereihenfolge.

= Abhängigkeitenabhängig vom Elementnamen[,abhängig vom Elementnamen]... Jedes Element mit Abhängigkeitsnamen in einer Abhängigkeitsliste gibt den Namen einer Dienst- oder Ladereihenfolgegruppe an, von der das Gerät/Treiber abhängt.

Wenn der Name des abhängigen Elements einen Dienst angibt, muss der Dienst ausgeführt werden, bevor dieser Treiber gestartet wird. Beispielsweise hängt der INF für die vom System bereitgestellten Win32 TCP/IP-Druckdienste von der Unterstützung des zugrunde liegenden TCP/IP-Transportstapels (Kernelmodus) ab. Folglich gibt der INF für die TCP/IP-Druckdienste diesen Eintrag als Abhängigkeiten=TCPIP an.

Ein abhängiger Elementname kann eine Ladereihenfolgegruppe angeben, von der dieses Gerät/Treiber abhängt. Ein solcher Treiber wird nur gestartet, wenn mindestens ein Mitglied der angegebenen Gruppe gestartet wurde. Stellen Sie dem Gruppennamen ein Pluszeichen (+) voran. Die SYSTEM-RAS-Dienste INF können z. B. einen Eintrag wie Abhängigkeiten = +NetBIOSGroup,RpcSS haben, der sowohl eine Ladereihenfolgegruppe als auch einen Dienst auflistet.

Security="security-descriptor-string"
Gibt einen Sicherheitsdeskriptor an, der auf den Dienst angewendet werden soll. Dieser Sicherheitsdeskriptor gibt die Berechtigungen an, die zum Ausführen von Vorgängen wie dem Starten, Beenden und Konfigurieren des Diensts erforderlich sind. Der Wert "security-descriptor-string " ist eine Zeichenfolge mit Token, die die DACL-Sicherheitskomponente (D:) angeben.

Informationen zu Sicherheitsdeskriptorzeichenfolgen finden Sie unter Security Descriptor Definition Language (Windows). Informationen zum Format von Sicherheitsdeskriptorzeichenfolgen finden Sie unter Security Descriptor Definition Language (Windows).

Weitere Informationen zum Angeben von Sicherheitsdeskriptoren finden Sie unter Erstellen sicherer Geräteinstallationen.

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

Hinweis

Dieser Wert kann nur für Win32-Dienste verwendet werden und ist nur für Windows 7 und höher verfügbar.

Jeder Berechtigungsname in der Liste ist der Name einer Berechtigung, die der Dienst benötigt. Eine Liste der Berechtigungsnamen finden Sie unter Berechtigungskonstanten (Windows). Für jeden Berechtigungsnamen ist nur der Textname erforderlich. Beispielsweise sollte der Berechtigungsname als "SeAuditPrivilege" geschrieben werden, aber nicht als SE_AUDIT_NAME.

Weitere Informationen zu den erforderlichen Berechtigungen des Diensts finden Sie unter SERVICE_REQUIRED_PRIVILEGES_INFO (Windows).

ServiceSidType=wert

Hinweis

Dieser Wert kann nur für Win32-Dienste verwendet werden und ist nur mit Windows 10 Version 2004 und höher verfügbar.

Dieser Eintrag kann einen beliebigen gültigen Wert verwenden, wie in SERVICE_SID_INFO beschrieben.

DelayedAutoStart=wert

Hinweis

Dieser Wert kann nur für Win32-Dienste verwendet werden und ist nur mit Windows 10 2004 und höher verfügbar.

Enthält die Verzögerte Einstellung für den automatischen Start eines Automatischstartdiensts.

Wenn dieses Mitglied 0x0 ist, wird der Dienst während des Systemstarts gestartet. Andernfalls wird der Dienst gestartet, nachdem andere Dienste für den automatischen Start gestartet wurden, und eine kurze Verzögerung.

Diese Einstellung wird ignoriert, es sei denn, der Dienst ist ein Automatischer Startdienst.

Weitere Informationen finden Sie auf dieser Seite.

AddTrigger=service-trigger-install-section [, Service-trigger-install-section, ...]
Gibt die Triggerereignisse an, die für den Win32-Dienst registriert werden sollen, damit der Dienst gestartet oder beendet werden kann, wenn ein Triggerereignis auftritt. Weitere Informationen zu Diensttriggerereignissen finden Sie unter Service Trigger-Ereignisse.

Jeder benannte Diensttrigger-Installationsabschnitt , auf den von einer AddTrigger-Direktive verwiesen wird, weist das folgende Format auf:

[service-trigger-install-section]

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

BootFlags=wert

Hinweis

Dieser Wert kann nur mit Kernelmodustreiberdiensten verwendet werden und ist nur mit Windows 11 Build 25398 und höher verfügbar.

Gibt optional an, wann das Betriebssystem den StartType-Wert eines Treibers auf 0x0 (SERVICE_BOOT_START) heraufstufen soll. Sie können einen oder mehrere (ORed) der folgenden numerischen Werte angeben, ausgedrückt als Hexadezimalwerte.

  • 0x1 (CM_SERVICE_NETWORK_BOOT_LOAD) Gibt an, dass der Treiber höhergestuft werden soll, wenn er über das Netzwerk gestartet wird.

  • 0x2 (CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD) Gibt an, dass der Treiber höhergestuft werden soll, wenn er von einer VHD gestartet wird.

  • 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD)
    Gibt an, dass der Treiber heraufgestuft werden soll, wenn er von einem USB-Datenträger gestartet wird.

  • 0x8 (CM_SERVICE_SD_DISK_BOOT_LOAD)
    Gibt an, dass der Treiber höhergestuft werden soll, wenn der Start aus dem SD-Speicher erfolgt.

  • 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD)
    Gibt an, dass der Treiber höhergestuft werden soll, wenn er von einem Datenträger auf einem USB 3.0-Controller gestartet wird.

  • 0x20 (CM_SERVICE_MEASURED_BOOT_LOAD) Gibt an, dass der Treiber höhergestuft werden soll, wenn der kontrollierte Start aktiviert ist.

  • 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD)
    Gibt an, dass der Treiber höhergestuft werden soll, wenn der Start mit aktivierter Überprüfung aktiviert ist.

  • 0x80 (CM_SERVICE_WINPE_BOOT_LOAD)
    Gibt an, dass der Treiber höhergestuft werden soll, wenn er mit WinPE gestartet wird.

Service-Trigger-Install-Section Einträge und Werte

TriggerType=Triggertyp
Gibt den Typ des Diensttriggerereignisses in einem der folgenden numerischen Werte an, ausgedrückt entweder in dezimal oder, wie in der folgenden Liste dargestellt, Hexadezimalnotation:

0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL)
Gibt an, dass das Ereignis ausgelöst wird, wenn ein Gerät der angegebenen Geräteschnittstellenklasse eingeht oder vorhanden ist, wenn das System gestartet wird.

Weitere Informationen finden Sie unter SERVICE_TRIGGER Struktur.

Aktion=Aktionstyp
Gibt die auszuführende Aktion an, wenn das angegebene Triggerereignis auftritt.

0x1 (SERVICE_TRIGGER_ACTION_SERVICE_START)
Starten Sie den Dienst, wenn das angegebene Triggerereignis auftritt.

0x2 (SERVICE_TRIGGER_ACTION_SERVICE_STOP)
Beenden Sie den Dienst, wenn das angegebene Triggerereignis auftritt.

Weitere Informationen finden Sie unter SERVICE_TRIGGER Struktur.

SubType=Trigger-Untertyp
Gibt eine GUID an, die den Triggerereignisuntertyp identifiziert. Der Wert hängt vom Wert des TriggerType ab.

Wenn TriggerType0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL) ist, gibt SubType die GUID an, die die Geräteschnittstellenklasse identifiziert.

Weitere Informationen finden Sie unter SERVICE_TRIGGER Struktur.

DataItem=Datentyp, Daten
Gibt optional die triggerspezifischen Daten für ein Diensttriggerereignis an.

Wenn TriggerType0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL) ist, kann ein optionales DataItem mit einem Datentyp von 0x2 (SERVICE_TRIGGER_DATA_TYPE_STRING) angegeben werden, um die Geräteschnittstellenklasse auf eine bestimmte Hardware-ID oder kompatible ID festzulegen.

Weitere Informationen finden Sie unter SERVICE_TRIGGER_SPECIFIC_DATA_ITEM Struktur

Die bewährte Methode für die Verwendung der AddTrigger-Direktive besteht darin, den Start des Diensts auf der Geräteschnittstellenankunft auszulösen. Weitere Informationen finden Sie unter Win32 Services Interacting with Devices.

Hinweis

Die AddTrigger-Syntax ist nur in Windows 10 Version 2004 und vorwärts verfügbar.

FailureActions=Abschnitt "service-failure-actions-install-section"
Gibt optional die Aktion an, die der Dienstcontroller ausführen soll, wenn ein Dienst fehlschlägt.

Der Dienststeuerungs-Manager zählt, wie oft jeder Dienst seit dem Systemstart fehlgeschlagen ist. Die Anzahl wird auf 0 zurückgesetzt, wenn der Dienst nicht für Zurücksetzungszeitraum Sekunden fehlgeschlagen ist. Wenn der Dienst zum Nth-Zeitpunkt fehlschlägt, führt der Dienstcontroller die in Element N der Aktionsliste angegebene Aktion aus. Wenn N größer als die Anzahl der Aktionen ist, wiederholt der Dienstcontroller die letzte Aktion in der Liste.

Der Abschnitt "service-failure-actions-install-section ", auf den eine FailureActions-Direktive verweist, weist das folgende Format auf:

[service-failure-actions-install-section]

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

Dienstfehleraktionen-Install-Section Einträge und Werte

ResetPeriod=Rücksetzungszeitraum
Gibt die Zeit an, nach der die Fehleranzahl auf Null zurückgesetzt werden soll, wenn keine Fehler vorhanden sind, in Sekunden. Die Fehleranzahl wird nicht standardmäßig zurückgesetzt, wenn kein Zurücksetzungszeitraum angegeben wird.

Weitere Informationen finden Sie unter SERVICE_FAILURE_ACTIONSW Struktur.

NonCrashFailures=wert
Enthält die Flageinstellung für Fehleraktionen eines Diensts. Die Einstellung bestimmt, wann Fehleraktionen ausgeführt werden sollen. Ein Wert von 0x0 gibt "False" an, und ein Wert von 0x1 gibt "True" an.

Weitere Informationen finden Sie unter SERVICE_FAILURE_ACTIONS_FLAG Struktur (winsvc.h).

Aktion=failure-action-type,delay
Gibt eine Aktion an, die der Dienststeuerungs-Manager ausführen kann. Mehrere Aktionseinträge bilden eine sortierte Liste der Fehleraktionen. Weitere Informationen finden Sie unter SC_ACTION Struktur.

Hinweis

FailureActions-Syntax kann nur für Win32-Dienste verwendet werden und ist ab Windows 11, Version 22H2, verfügbar.

Festlegen der Treiberladereihenfolge

Das Betriebssystem lädt Treiber gemäß dem StartType-Wert des Dienstinstallationsabschnitts wie folgt:

  • Während der Startphase lädt das Betriebssystem alle 0x0 (SERVICE_BOOT_START)-Treiber.

  • Während der Startphase des Systems lädt das Betriebssystem zunächst alle WDM- und PnP-Treiber, für die der PnP-Manager Geräteknoten (Devnodes) findet (ob ihre INF-Dateien 0x01 für SERVICE_SYSTEM_START oder 0x03 für SERVICE_DEMAND_START angeben). Anschließend lädt das Betriebssystem alle verbleibenden SERVICE_SYSTEM_START Treiber.

  • Während der Automatischen Startphase lädt das Betriebssystem alle verbleibenden SERVICE_AUTO_START Treiber.

Weitere Informationen zu Abhängigkeiten finden Sie unter Angeben der Treiberladereihenfolge.

Fördern des Starttyps eines Treibers beim Start abhängig vom Startszenario

Je nach Startszenario können Sie den Registrierungswert BootFlags verwenden, um zu steuern, wann das Betriebssystem den StartType-Wert eines Treibers auf 0x0 (SERVICE_BOOT_START) heraufstufen soll. Sie können einen oder mehrere (ORed) der folgenden numerischen Werte angeben, ausgedrückt als Hexadezimalwert:

  • 0x1 (CM_SERVICE_NETWORK_BOOT_LOAD) gibt an, dass der Treiber höhergestuft werden soll, wenn er aus dem Netzwerk gestartet wird.

  • 0x2 (CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD) gibt an, dass der Treiber höhergestuft werden soll, wenn er von einer VHD gestartet wird.

  • 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD) gibt an, dass der Treiber höhergestuft werden soll, wenn er von einem USB-Datenträger gestartet wird.

  • 0x8 (CM_SERVICE_SD_DISK_BOOT_LOAD) gibt an, dass der Treiber heraufgestuft werden soll, wenn er vom SD-Speicher gestartet wird.

  • 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD) gibt an, dass der Treiber höhergestuft werden soll, wenn er von einem Datenträger auf einem USB 3.0-Controller gestartet wird.

  • 0x20 (CM_SERVICE_MEASURED_BOOT_LOAD) gibt an, dass der Treiber höhergestuft werden soll, wenn der Start während des kontrollierten Starts aktiviert ist.

  • 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD) gibt an, dass der Treiber höhergestuft werden soll, wenn der Start mit aktivierter Überprüfung aktiviert ist.

  • 0x80 (CM_SERVICE_WINPE_BOOT_LOAD) gibt an, dass der Treiber höhergestuft werden soll, wenn er mit WinPE gestartet wird.

Der Abschnitt "Dienstinstallation " weist das folgende allgemeine Formular auf:

[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

Hinweis

Diese Syntax sollte nur in Windows Versionen und Builds verwendet werden, die älter als Windows 11 Build 25398 sind. Verwenden Sie für Windows 11 Build 25398 und höher die BootFlags-Direktive.

Registrieren für die Ereignisprotokollierung

Eine AddService-Direktive kann auch an anderer Stelle in der INF-Datei auf einen Ereignisprotokoll-Installationsabschnitt verweisen. Jeder dieser Abschnitte weist das folgende Formular auf:

[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]...]
 ...

Bei einer typischen INF-Datei für Geräte/Treiber verwendet der Abschnitt "event-log-install-" nur die AddReg-Direktive , um eine Ereignisprotokollierungsmeldungsdatei für den Treiber einzurichten. Dieser Add-Registry-Abschnitt für die Ereignisprotokollierung weist das folgende allgemeine Formular auf:

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

Insbesondere fügt der Abschnitt zwei Werteinträge im Registrierungsunterschlüssel hinzu, der für das Gerät/Treiber erstellt wurde, wie folgt:

  • Der Werteintrag mit dem Namen EventMessageFile ist vom Typ REG_EXPAND_SZ, wie durch den FLG_ADDREG_TYPE_EXPAND_SZ Wert 0x00020000 angegeben. Der Wert, der in doppelte Anführungszeichen (") eingeschlossen ist, ordnet das vom System bereitgestellte IoLogMsg.dll zu (es kann jedoch eine andere Protokollierungs-DLL mit der Treiber-Binärdatei verknüpfen). In der Regel werden die Pfade zu den einzelnen Dateien wie folgt angegeben:

    %%SystemRoot%%\System32\IoLogMsg.dll

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

  • Der Werteintrag mit dem Namen TypesSupported ist vom Typ REG_DWORD, wie durch den FLG_ADDREG_TYPE_DWORD Wert 0x00010001 angegeben.

    Für Treiber sollte dieser Wert 7 sein. Dieser Wert entspricht dem bitweisen OR von EVENTLOG_SUCCESS, EVENTLOG_ERROR_TYPE, EVENTLOG_WARNING_TYPE und EVENTLOG_INFORMATION_TYPE, ohne die EVENTLOG_AUDIT__XXX_ Bits festzulegen.

Ein Event-log-install-section kann auch die DelReg-Direktive verwenden, um eine zuvor installierte Ereignisprotokoll-Nachrichtendatei zu entfernen, indem die vorhandenen EventMessageFile - und TypesSupported-Werteinträge explizit gelöscht werden, wenn eine Treiber-Binärdatei durch einen neu installierten Treiber ersetzt wird. (Siehe auch INF DelService-Richtlinie.)

Während eine BitReg-Direktive auch innerhalb eines INF-writer-defined event-log-install-section gültig ist, wird sie fast nie verwendet, da die Standardwerteinträge für die Gerätetreiberereignisprotokollierung keine Bitmasken sind.

Beispiele

Dieses Beispiel zeigt die Abschnitte "Dienstinstallation" und "Ereignisprotokollinstallation", auf die von der AddService-Direktive verwiesen wird, wie bereits weiter oben im Beispiel für DDInstall gezeigt. Dienste.

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

Siehe auch