Freigeben über


Erstellen einer INF-Datei für einen Minitreiber

Dateisystem-Minifiltertreiber benötigen eine INF-Datei, die auf dem Windows-Betriebssystem installiert werden muss. Sie finden mehrere BEISPIEL-INF-Dateien in den Minifilterbeispielen , die Sie als Ausgangspunkt verwenden können.

Ab Windows 10, Version 1903, wurden die INF-Anforderungen für primitive Treiber geändert, die Dateisystem-Minifilter enthalten. Ausführliche Informationen finden Sie unter Erstellen eines neuen Grundtyptreibers .

INF-Abschnitte für einen Dateisystemfiltertreiber

Eine INF-Datei für einen Dateisystemfiltertreiber enthält im Allgemeinen die folgenden Abschnitte:

Abschnitt Hinweise
Version Erforderlich
DestinationDirs Erforderlich
DefaultInstall Erforderlich
DefaultInstall.Services Erforderlich
ServiceInstall Erforderlich
AddRegistry Erforderlich
Zeichenfolgen Erforderlich

Ab Windows 10, Version 1903, sind die Abschnitte DefaultUninstall und DefaultUninstall.Services (mit Ausnahme) verboten. Diese Abschnitte waren in früheren Betriebssystemversionen optional.

Alle Treiber, die auf 64-Bit-Versionen von Windows-Systemen ausgeführt werden, müssen angemeldet sein, damit Windows sie laden kann. Weitere Informationen finden Sie unter Signieren eines Treibers.

Abschnitt "Version" (erforderlich)

Der Abschnitt Version gibt eine Klasse und GUID an, die vom Typ des Minifiltertreibers bestimmt wird, wie im folgenden Codebeispiel gezeigt.

[Version]
Signature   = "$WINDOWS NT$"
Class       = "ActivityMonitor"
ClassGuid   = {b86dff51-a31e-4bac-b3cf-e8cfe75c9fc2}
Provider    = %Msft%
DriverVer   = 10/09/2001,1.0.0.0
CatalogFile =
PnpLockdown = 1

In der folgenden Tabelle sind die Werte aufgeführt, die vom Dateisystem-Minifiltertreiber im Abschnitt Version angegeben werden sollen.

Eingabe Wert
Signature "$WINDOWS NT$"
Klasse Siehe Dateisystemfiltertreiberklassen und Klassen-GUIDs.
ClassGuid Siehe Dateisystemfiltertreiberklassen und Klassen-GUIDs.
Anbieter In Ihrer eigenen INF-Datei sollten Sie einen anderen Anbieter als Microsoft angeben.
DriverVer Siehe INF-DriverVer-Anweisung.
CatalogFile Bei signierten Antiviren-Minifiltertreibern enthält dieser Eintrag den Namen einer WHQL-bereitgestellten Katalogdatei. Alle anderen Minifiltertreiber sollten diesen Eintrag leer lassen. Weitere Informationen finden Sie in der Beschreibung des CatalogFile-Eintrags im ABSCHNITT "INF-Version"

DestinationDirs-Abschnitt (erforderlich)

Der Abschnitt "DestinationDirs " gibt die Verzeichnisse an, in die Minifiltertreiber und Anwendungsdateien kopiert werden sollen.

In diesem Abschnitt und im Abschnitt "ServiceInstall " können Sie bekannte Systemverzeichnisse nach vom System definierten numerischen Werten angeben. Eine Liste dieser Werte finden Sie im Abschnitt "INF DestinationDirs". Im folgenden Codebeispiel bezieht sich der Wert 13 auf einen vom Betriebssystem definierten Treiberspeicherort im System.

[DestinationDirs]
Minispy.DriverFiles = 13
Minispy.UserFiles   = 13

Abschnitt DefaultInstall (erforderlich)

Im Abschnitt DefaultInstall kopiert eine CopyFiles Direktive die Treiberdateien und Benutzeranwendungsdateien des Minifiltertreibers an die Ziele, die im Abschnitt DestinationDirs angegeben sind.

Hinweis

Die CopyFiles-Direktive sollte sich nicht auf die Katalogdatei oder die INF-Datei selbst beziehen, da diese Dateien automatisch kopiert werden.

Sie können eine einzelne INF-Datei erstellen, um Den Treiber auf mehreren Versionen der Windows-Betriebssysteme zu installieren. Sie können diesen TYP von INF-Datei erstellen, indem Sie die Abschnitte DefaultInstall und DefaultInstall.Services für jede Betriebssystemversion erstellen. Jeder Abschnitt wird mit einer Dekoration (z. B. .ntx86, .ntia64 oder .nt) bezeichnet, die die Betriebssystemversion angibt, auf die sie angewendet wird. Weitere Informationen zum Erstellen dieses INF-Dateityps finden Sie unter Erstellen von INF-Dateien für mehrere Plattformen und Betriebssysteme.

Das folgende Codebeispiel zeigt einen typischen DefaultInstall-Abschnitt.

[DefaultInstall.NTamd64]
OptionDesc = %MinispyServiceDesc%
CopyFiles = Minispy.DriverFiles, Minispy.UserFiles

DefaultInstall.Services-Abschnitt (erforderlich)

Der Abschnitt DefaultInstall.Services einhält eine AddService-Directive, die steuert, wie und wann die Dienste eines bestimmten Treibers geladen werden, wie im folgenden Codebeispiel gezeigt.

[DefaultInstall.NTamd64.Services]
AddService = %MinispyServiceName%,,Minispy.Service

ServiceInstall-Abschnitt (erforderlich)

Der Abschnitt "ServiceInstall " enthält Informationen zum Laden des Treiberdiensts. Im MiniSpy-Beispieltreiber heißt dieser Abschnitt "Minispy.Service", wie im folgenden Codebeispiel gezeigt. Der Name des AnschnittsServiceInstall muss im AddService-Directive im Abschnitt DefaultInstall.Services angezeigt werden.

[Minispy.Service]
DisplayName    = %MinispyServiceName%
Description    = %MinispyServiceDesc%
ServiceBinary  = %13%\minispy.sys
ServiceType    = 2 ;    SERVICE_FILE_SYSTEM_DRIVER
StartType      = 3 ;    SERVICE_DEMAND_START
ErrorControl   = 1 ;    SERVICE_ERROR_NORMAL%
LoadOrderGroup = "FSFilter Activity Monitor"
AddReg         = Minispy.AddRegistry
Dependencies   = FltMgr

Der ServiceType-Eintrag gibt den Diensttyp an. Minifiltertreiber sollten einen Wert von 2 (SERVICE_FILE_SYSTEM_DRIVER) angeben. Weitere Informationen zum ServiceType-Eintrag finden Sie unter INF AddService-Direktive.

Der StartType-Eintrag gibt an, wann der Dienst gestartet werden soll. In der folgenden Tabelle sind die möglichen Werte für StartType und die entsprechenden Starttypen aufgeführt.

Wert Beschreibung
0x00000000 SERVICE_BOOT_START
0x00000001 SERVICE_SYSTEM_START
0x00000002 SERVICE_AUTO_START
0x00000003 SERVICE_DEMAND_START
0x00000004 SERVICE_DISABLED

Weitere Informationen zu diesen Starttypen finden Sie unter "Treiberstarttypen", was bestimmt, wann ein Treiber geladen wird.

Der LoadOrderGroup-Eintrag stellt dem Filter-Manager Informationen bereit, die benötigt werden, um die Interoperabilität zwischen Minifiltertreibern und älteren Dateisystemfiltertreibern sicherzustellen. Sie sollten einen LoadOrderGroup-Wert angeben, der für den Typ des von Ihnen entwickelten Minifiltertreibers geeignet ist. Informationen zum Auswählen einer Ladeauftragsgruppe finden Sie unter Ladeauftragsgruppen und Höhen für Minifilter-Treiber.

Sie müssen einen LoadOrderGroup-Wert angeben, auch wenn der Starttyp des Minifiltertreibers nicht SERVICE_BOOT_START ist. Auf diese Weise unterscheiden sich Minifiltertreiber von älteren Dateisystemfiltertreibern.

Hinweis

Der StartType-Wert des Filter-Managers ist SERVICE_BOOT_START, und sein LoadOrderGroup-Wert FSFilter Infrastructure ist. Diese Werte stellen sicher, dass der Filter-Manager immer geladen wird, bevor Minifiltertreiber geladen werden.

Weitere Informationen dazu, wie die StartType - und LoadOrderGroup-Einträge bestimmen, wann der Treiber geladen wird, finden Sie unter What Determines When a Driver Is Loaded.

Im Gegensatz zu älteren Filtertreibern bestimmen die Werte "StartType " und "LoadOrderGroup " nicht, wo der Minifiltertreiber im Minifilterinstanzstapel angefügt wird. Stattdessen bestimmt die für die Minifilterinstanz angegebene Höhe die Position.

Der ErrorControl-Eintrag gibt die auszuführende Aktion an, wenn der Dienst beim Systemstart nicht gestartet werden kann. Minifiltertreiber sollten einen Wert von 1 (SERVICE_ERROR_NORMAL) angeben. Weitere Informationen zum ErrorControl-Eintrag finden Sie unter INF AddService-Direktive.

Die AddReg bezieht sich auf einen oder mehrere vom INF-Writer definierte AddRegistry-Abschnitte, die Informationen enthalten, die in der Registrierung für den neu installierten Dienst gespeichert werden sollen. Minifiltertreiber verwenden AddRegistry-Abschnitte , um Minifiltertreiberinstanzen zu definieren und eine Standardinstanz anzugeben.

Der Eintrag Abhängigkeiten gibt die Namen aller Dienste oder Ladereihenfolgegruppen an, von denen der Treiber abhängt. Alle Minifiltertreiber müssen FltMgr angeben, bei dem es sich um den Dienstnamen des Filter-Managers handelt.

AddRegistry-Abschnitt (erforderlich)

Im Abschnitt AddRegistry werden der Registrierung Schlüssel und Werte hinzugefügt. Minifiltertreiber verwenden einen AddRegistry-Abschnitt, um Minifiltertreiberinstanzen zu definieren und eine Standardinstanz anzugeben. Diese Informationen werden verwendet, wenn der Filter-Manager eine neue Instanz für den Minifiltertreiber erstellt.

Im MiniSpy-Beispieltreiber werden im folgenden AddRegistry-Abschnitt drei Instanzen definiert, von denen eine als Standardinstanz des MiniSpy-Beispieltreibers benannt ist.

Hinweis

Die folgenden Werte sollten unter dem Unterschlüssel "Parameters" ab Windows 11, Version 24H2, stehen.

[Minispy.AddRegistry]
HKR,"Parameters","SupportedFeatures",0x00010001,0x3
HKR,"Parameters\Instances","DefaultInstance",0x00000000,%DefaultInstance%
HKR,"Parameters\Instances\"%Instance1.Name%,"Altitude",0x00000000,%Instance1.Altitude%
HKR,"Parameters\Instances\"%Instance1.Name%,"Flags",0x00010001,%Instance1.Flags%
HKR,"Parameters\Instances\"%Instance2.Name%,"Altitude",0x00000000,%Instance2.Altitude%
HKR,"Parameters\Instances\"%Instance2.Name%,"Flags",0x00010001,%Instance2.Flags%
HKR,"Parameters\Instances\"%Instance3.Name%,"Altitude",0x00000000,%Instance3.Altitude%
HKR,"Parameters\Instances\"%Instance3.Name%,"Flags",0x00010001,%Instance3.Flags%

Abschnitt "Strings" (erforderlich)

Der Abschnitt Strings definiert jedes in der INF-Datei verwendete %strkey%-Token.

Sie können eine einzelne internationale INF-Datei erstellen, indem Sie zusätzliche gebietsschemaspezifische Strings.LanguageID-Abschnitte in der INF-Datei erstellen. Weitere Informationen zu internationalen INF-Dateien finden Sie unter Erstellen internernationaler INF-Dateien.

Das folgende Codebeispiel zeigt einen typischen String-Abschnitt.

[Strings]
Msft               = "Microsoft Corporation"
MinispyServiceDesc = "Minispy mini-filter driver"
MinispyServiceName = "Minispy"

DefaultInstance    = "Minispy - Top Instance"
Instance1.Name     = "Minispy - Middle Instance"
Instance1.Altitude = "370000"
Instance1.Flags    = 0x1 ; Suppress automatic attachments
Instance2.Name     = "Minispy - Bottom Instance"
Instance2.Altitude = "365000"
Instance2.Flags    = 0x1 ; Suppress automatic attachments
Instance3.Name     = "Minispy - Top Instance"
Instance3.Altitude = "385000"
Instance3.Flags    = 0x1 ; Suppress automatic attachments

Abschnitte "DefaultUninstall" und "DefaultUninstall.Services"

Hinweis

The DefaultUninstall und DefaultUninstall.Services sind ab Windows 10 Version 1903 verboten (mit Ausnahme).

In Windows 10 vor Version 1903 waren die Abschnitte DefaultUninstall und DefaultUninstall.Services optional, aber empfohlen, wenn der Treiber deinstalliert werden könnte:

  • DefaultUninstall enthielt DelFiles- und DelReg-Direktiven , um Dateien und Registrierungseinträge zu entfernen.
  • DefaultUninstall.Services enthielt DelService-Direktiven , um die Dienste des Minifiltertreibers zu entfernen. Die DelService-Direktive hat immer das SPSVCINST_STOPSERVICE Flag (0x00000200) angegeben, um den Dienst zu beenden, bevor er gelöscht wurde.

Das folgende Beispiel zeigt typische Abschnitte DefaultUninstall und DefaultUninstall.Services vor Windows 10, Version 1903.

[DefaultUninstall.NTamd64]
DelFiles   = Minispy.DriverFiles, Minispy.UserFiles
DelReg     = Minispy.DelRegistry

[DefaultUninstall.NTamd64.Services]
DelService = Minispy,0x200