INF AddService-Direktive

Hinweis

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

Eine AddService-Direktive wird in einem INF DDInstall verwendet. Abschnitt "Services" oder "INF DefaultInstall.Services". Es gibt Merkmale der mit Treibern verknüpften Dienste an, z. B. wie und wann die Dienste geladen werden, und alle Abhängigkeiten von anderen zugrunde liegenden Legacytreibern oder -diensten. Optional richtet diese Direktive 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 so eindeutig sein, dass es unwahrscheinlich ist, dass ein Konflikt mit einem Dienst auftritt, der von einer anderen INF-Datei installiert wird. Der Dienstname könnte beispielsweise eine kurze Abkürzung Ihres Unternehmensnamens als Präfix oder Suffix enthalten. Dieser Name darf nicht lokalisiert werden. Sie muss unabhängig von der lokalen Sprache des Systems identisch sein.

flags
Gibt mindestens eins (ORed) der folgenden systemdefinierten Flags an, die in Setupapi.h definiert sind und als Hexadezimalwert ausgedrückt werden:

0x00000001 (SPSVCINST_TAGTOFRONT)
Verschieben Sie das Tag des benannten Diensts an den Anfang seiner Gruppenreihenfolgenliste, um sicherzustellen, dass es zuerst innerhalb dieser Gruppe geladen wird (es sei denn, ein später installiertes Gerät mit dieser INF-Spezifikation verdrängt es). 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 wie einen Filtertreiber oder eine andere Treiberkomponente sollte das Flag nicht verwendet werden.

Jeder Gerätetreiber-INF sollte über genau einen zugehörigen Dienst verfügen. Der INF erfordert keinen zugeordneten Dienst, wenn es sich um eine Erweiterungs-INF handelt oder die Include/Needs-Direktive 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 den Starttyp des angegebenen Diensts nicht, 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 Load-Order-Group-Wert 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ängigkeitenliste 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, nachdem der Dienst installiert wurde. Dieses Flag kann nicht verwendet werden, um einen Dienst zu starten, der einen PnP-Funktionstreiber (Plug & Play) 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 höher 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 in der AddTrigger-Direktive unten.

0x00004000 (SPSVCINST_NOCLOBBER_SERVICESIDTYPE) (Windows 10 Version 2004 und höher 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 weiter unten in der ServiceSidType-Direktive.

0x00008000 (SPSVCINST_NOCLOBBER_DELAYEDAUTOSTART) (Windows 10 Version 2004 und höher von Windows)
Überschreiben Sie den Verzögerten Automatischstartwert 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 weiter unten in der DelayedAutoStart-Direktive.

0x00020000 (SPSVCINST_NOCLOBBER_FAILUREACTIONS) (Windows 11 Version 22H2 und höher 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 weiter unten in der FailureActions-Direktive.

0x00040000 (SPSVCINST_NOCLOBBER_BOOTFLAGS) (Windows 11 Build 25381 und höher von Windows) Überschreiben Sie den Wert der Startflags 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 unten.

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

event-log-install-section
Optional verweist auf einen inF-Writer definierten Abschnitt, in dem Ereignisprotokollierungsdienste für dieses Gerät (oder geräte) eingerichtet sind.

EventLogType
Gibt optional eine der System-, Sicherheits- oder Anwendungsfunktionen an. Wenn nicht angegeben, wird standardmäßig System verwendet, was fast immer der geeignete Wert für die Installation von Gerätetreibern ist.

Beispielsweise würde ein INF Sicherheit nur angeben, wenn der zu installierende Treiber eine eigene Sicherheitsunterstützung bereitstellt.

EventName
Gibt optional einen Namen an, der für das Ereignisprotokoll verwendet werden soll. Wenn nicht angegeben, wird standardmäßig der angegebene ServiceName verwendet.

Hinweise

Die systemdefinierten erweiterungen und ohne Beachtung der Groß-/Kleinschreibung können in einen DDInstall eingefügt werden. Dienstabschnitt, der eine AddService-Direktive in betriebssystemübergreifenden und/oder plattformübergreifenden INF-Dateien enthält, um plattformspezifische oder betriebssystemspezifische Installationen anzugeben.

Jeder vom INF-Writer erstellte Abschnittsname muss innerhalb der INF-Datei eindeutig sein und 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 hat das folgende Formular:

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

Jeder Dienstinstallationsabschnitt muss mindestens die Einträge ServiceType, StartType, ErrorControl und ServiceBinary aufweisen, wie hier gezeigt. Die übrigen Einträge sind jedoch optional.

Service-Install Abschnittseinträge und -werte

Displayname=Namen
Gibt einen Anzeigenamen für den Dienst/Treiber an, der normalerweise zur vereinfachung der Lokalisierung als %strkey%-Token ausgedrückt wird, der in einem Abschnitt "Strings " der INF-Datei definiert ist.

Beschreibung=description-string
Gibt optional eine Zeichenfolge an, die den Dienst beschreibt, der in der Regel als %strkey%-Token ausgedrückt wird, das in einem Strings-Abschnitt der INF-Datei definiert ist.

Diese Zeichenfolge gibt dem Benutzer mehr Informationen zum Dienst als DisplayName. Beispielsweise kann der DisplayName etwa "DHCP-Client" und die Beschreibung 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 lang, dass sie unbeholfen ist. Wenn eine Description-Zeichenfolge ein %strkey%-Token enthält, kann jedes Token maximal 511 Zeichen darstellen. Die Gesamtzeichenfolge sollte nach allen Zeichenfolgentokenersetzungen 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. einen Redirector oder einen Dateisystemtreiber, sollte auf 0x00000002 (SERVICE_FILE_SYSTEM_DRIVER) festgelegt werden.

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

StartType=start-code
Gibt an, wann der Treiber als einer der folgenden numerischen Werte gestartet werden soll, ausgedrückt entweder als Dezimalwert oder, wie in der folgenden Liste gezeigt, in hexadezimaler Notation.

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

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

0x1 (SERVICE_SYSTEM_START)
Gibt einen Treiber an, der 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 seiner 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 während des Systemstarts vom Dienststeuerungs-Manager gestartet wird.

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

0x3 (SERVICE_DEMAND_START)
Gibt einen Dienst an, der bei Bedarf gestartet wird, entweder vom PnP-Manager, wenn das entsprechende Gerät aufgezählt wird, oder möglicherweise vom Dienststeuerungs-Manager als Reaktion auf eine explizite Benutzeranforderung nach einem Nicht-PnP-Gerät.

Dieser Wert sollte in den INF-Dateien für alle WDM-Treiber von Geräten verwendet werden, die nicht zum Laden des Systems erforderlich sind, und für alle PnP-Gerätetreiber, 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 Dienstinstallationsabschnitt 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 als Dezimalwert oder, wie in der folgenden Liste gezeigt, in hexadezimaler Notation.

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

0x1 (SERVICE_ERROR_NORMAL)
Wenn der Treiber sein Gerät nicht laden oder initialisieren kann, sollte der Systemstart fortgesetzt werden, aber dem Benutzer wird eine Warnung angezeigt.

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

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 Verwendung von LastKnownGood weiterhin fehlschlägt, führen Sie eine Fehlerüberprüfungsroutine aus. (Nur Geräte/Treiber, die für den Start des Systems erforderlich sind, geben diesen Wert in ihren INF-Dateien an.)

ServiceBinary=Path-to-Service
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 einer der systemdefinierte Verzeichnisbezeichner, die unter Verwenden von Dirids beschrieben werden. Der angegebene Dateiname gibt eine Datei an, die bereits vom Quellverteilungsmedium in dieses Verzeichnis auf dem Zielcomputer übertragen wurde (siehe INF CopyFiles-Direktive).

StartName=dienst-start-name 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 type-code das 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-definierte del-registry-abschnitte , 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 Dienstinstallationsabschnitt verwendet, aber sie kann in einem INF verwendet werden, das die Registrierung für eine vorherige Installation desselben Geräts/Treiberdiensts "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 identifiziert die Ladereihenfolgegruppe, der dieser Treiber angehört. Dabei kann es sich um eine der "Standard"-Ladereihenfolgegruppen handeln, z. B. SCSI-Klasse oder NDIS.

Im Allgemeinen ist dieser Eintrag für Geräte mit WDM-Treibern oder ausschließlich für PnP-Geräte nicht erforderlich, es sei denn, es bestehen Legacyabhängigkeiten von einer solchen Gruppe. Dieser Eintrag kann jedoch nützlich 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ängigkeiten=depend-on-item-name[,depend-on-item-name]... Jedes Element des Abhängigkeitsnamens in einer Abhängigkeitsliste gibt den Namen eines Diensts oder einer Ladereihenfolgegruppe an, von der das Gerät bzw. der Treiber abhängt.

Wenn depend-on-item-name einen Dienst angibt, ist der Dienst, der ausgeführt werden muss, bevor dieser Treiber gestartet wird. Beispielsweise hängt die 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 Dependencies=TCPIP an.

Ein Abhängigkeits-auf-Element-Name kann eine Ladereihenfolgegruppe angeben, von der dieses Gerät/Treiber abhängig ist. Ein solcher Treiber wird nur gestartet, wenn mindestens ein Mitglied der angegebenen Gruppe gestartet wurde. Dem Gruppennamen wird ein Pluszeichen (+) vorangestellt. Beispielsweise kann der SYSTEM RAS-Dienst INF über einen Eintrag wie Abhängigkeiten = +NetBIOSGroup,RpcSS verfügen, 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 Sicherheitsbeschreibungen 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 unter Windows 7 und höher verfügbar.

Jeder Berechtigungsname in der Liste ist der Name einer Berechtigung, die für den Dienst erforderlich ist. 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 Dienstberechtigungen 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 Einstellung für verzögerten automatischen Start eines Diensts für den automatischen Start.

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

Diese Einstellung wird ignoriert, es sei denn, der Dienst ist ein Dienst für den automatischen Start.

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 Diensttriggerereignisse.

Jeder benannte service-trigger-install-section , auf den von einer AddTrigger-Direktive verwiesen wird, hat das folgende Format:

[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 Treiberdiensten im Kernelmodus verwendet werden und ist nur mit Windows 11 Build 25381 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öher gestuft werden soll, wenn er über das Netzwerk gestartet wird.

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

  • 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD)
    Gibt an, dass der Treiber auf 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 höher gestuft werden soll, wenn er vom SD-Speicher gestartet wird.

  • 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD)
    Gibt an, dass der Treiber höher gestuft 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öher gestuft werden soll, wenn der Start während des kontrollierten Starts aktiviert ist.

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

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

Einträge und Werte im Abschnitt "Service-Trigger-Install-Section"

TriggerType=trigger-type
Gibt den Ereignistyp des Diensttriggers in einem der folgenden numerischen Werte an, ausgedrückt in dezimaler Oder, wie in der folgenden Liste dargestellt, hexadezimaler Notation:

0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL)
Gibt an, dass das Ereignis ausgelöst wird, wenn ein Gerät der angegebenen Geräteschnittstellenklasse eintrifft oder beim Starten des Systems vorhanden ist.

Weitere Informationen finden Sie unter SERVICE_TRIGGER-Struktur.

Aktion=action-type
Gibt die Aktion an, die ausgeführt werden soll, 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.

Untertyp=trigger-subtype
Gibt eine GUID an, die den Triggerereignisuntertyp identifiziert. Der Wert hängt vom Wert von 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 bei der Ankunft der Geräteschnittstelle auszulösen. Weitere Informationen finden Sie unter Win32-Dienste interagieren mit Geräten.

Hinweis

Die AddTrigger-Syntax ist nur in Windows 10 Version 2004 und höher verfügbar.

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

Der Dienststeuerungs-Manager zählt, wie oft seit dem Systemstart ein Fehler bei jedem Dienst aufgetreten ist. Die Anzahl wird auf 0 zurückgesetzt, wenn der Dienst für die zurückgesetzten Sekunden nicht fehlgeschlagen ist. Wenn der Dienst zum N-ten Mal fehlschlägt, führt der Dienstcontroller die aktion aus, die in Element N der Liste Aktion angegeben ist. 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 von einer FailureActions-Direktive verwiesen wird, hat das folgende Format:

[service-failure-actions-install-section]

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

Einträge und Werte des Abschnitts "Service-Failure-Actions-Install-Section"

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

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. Der Wert 0x0 gibt False und der Wert 0x1 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 geordnete Liste von Fehleraktionen. Weitere Informationen finden Sie unter SC_ACTION-Struktur.

Hinweis

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

Angeben der Treiberladereihenfolge

Das Betriebssystem lädt Treiber gemäß dem StartType-Wert von service-install-section 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 (unabhängig davon, ob seine 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 Autostartphase lädt das Betriebssystem alle verbleibenden SERVICE_AUTO_START Treiber.

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

Höherstufen des StartTyps eines Treibers beim Start abhängig vom Startszenario

Abhängig vom Startszenario können Sie den BootFlags-Registrierungswert 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öher gestuft werden soll, wenn er über das Netzwerk gestartet wird.

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

  • 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD) gibt an, dass der Treiber auf 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 höher gestuft werden soll, wenn er vom SD-Speicher gestartet wird.

  • 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD) gibt an, dass der Treiber höher gestuft 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öher gestuft werden soll, wenn der Start ausgeführt wird, während der kontrollierte Start aktiviert ist.

  • 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD) gibt an, dass der Treiber höher gestuft werden soll, wenn das Starten mit aktiviertem Prüferstart ausgeführt wird.

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

Der Abschnitt service-install-hat die folgende allgemeine Form:

[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 25381 sind. Verwenden Sie für Windows 11 Build 25381 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 Event-log-install-Abschnitt verweisen. Jeder dieser Abschnitte hat die folgende Form:

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

Für eine typische Geräte-/Treiber-INF-Datei verwendet der Abschnitt event-log-install-nur die AddReg-Direktive , um eine Ereignisprotokollmeldungsdatei für den Treiber einzurichten. Dieser Add-Registry-Abschnitt für die Ereignisprotokollierung hat die folgende allgemeine Form:

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

Insbesondere werden im Abschnitt zwei Werteinträge im Registrierungsunterschlüssel hinzugefügt, 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. Sein Wert, der in doppelte Anführungszeichen (") eingeschlossen ist, ordnet die vom System bereitgestellte IoLogMsg.dll zu (es könnte jedoch eine andere Protokollierungs-DLL zugeordnet werden) der Binärdatei des Treibers. In der Regel werden die Pfade zu jeder dieser 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 Ereignisprotokollmeldungsdatei zu entfernen, indem die vorhandenen EventMessageFile - und TypesSupported-Werteinträge explizit gelöscht werden, wenn eine Treiberbinärdatei von einem neu installierten Treiber abgelöst wird. (Siehe auch INF DelService-Direktive.)

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

Beispiele

Dieses Beispiel zeigt die Abschnitte service-install und event-log-install, 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"

Weitere Informationen