Freigeben über


Erstellen einer INF-Datei für einen Dateisystemtreiber

In diesem Artikel wird beschrieben, wie Sie eine INF-Datei für einen Dateisystemtreiber erstellen.

Informationen zum Installieren und Deinstallieren eines Dateisystemtreibers mithilfe einer INF-Datei erhalten Sie in den folgenden Artikeln für Ältere Dateisystemfiltertreiber:

Informationen zu INF-Dateien des Dateisystems

Die Windows Setup- und Device Installer-Dienste, die gemeinsam als SetupAPI bezeichnet werden, stellen die Funktionen bereit, die die Installation von Windows-Setup und -Treibern steuern. INF-Dateien steuern den Installationsprozess. Weitere Informationen zu INF-Dateien finden Sie unter Creating an INF File and INF File Sections and Directives.

Die INF-Datei eines Dateisystemtreibers enthält Anweisungen, die SetupAPI zum Installieren verwendet. Die INF-Datei gibt die Dateien an, die vorhanden sein müssen, damit der Treiber ausgeführt werden soll, sowie die Quell- und Zielverzeichnisse für die Treiberdateien. Eine INF-Datei enthält auch Treiberkonfigurationsinformationen, die SetupAPI in der Registrierung speichert, z. B. den Starttyp und die Ladereihenfolgegruppe des Treibers.

Sie können eine einzelne INF-Datei erstellen, um den Treiber auf mehreren Versionen des Windows-Betriebssystems zu installieren. Weitere Informationen zum Erstellen einer solchen INF-Datei finden Sie unter Creating INF Files for Multiple Platforms and Operating Systems and Creating International INF Files.

Ab 64-Bit-Versionen von Windows Vista müssen alle Kernelmoduskomponenten angemeldet sein, um sie zu laden und auszuführen. Diese Anforderung umfasst Nicht-PnP-Treiber (Plug and Play), z. B. Dateisystemtreiber (Dateisystem, Legacyfilter und Minifiltertreiber). Allgemeine Informationen zum Signieren von Treibern finden Sie unter "Treibersignierung".

Für diese Versionen des Windows-Betriebssystems sind die folgenden Informationen für Dateisystemtreiber relevant.

  • INF-Dateien für Nicht-PnP-Treiber, einschließlich Dateisystemtreibern, müssen keine Abschnitte [Hersteller] oder [Modelle] enthalten.

  • Das Befehlszeilentool SignTool, das sich im Verzeichnis \bin\xx.x.xxxxx.x\SelfSign des WDK-Installationsverzeichnisses befindet, kann verwendet werden, um eine SYS-Treiber ausführbare Datei direkt "signieren" zu lassen. Aus Leistungsgründen müssen Starttreiber eine eingebettete Signatur enthalten.

  • Bei einer INF-Datei kann das Befehlszeilentool Inf2Cat verwendet werden, um eine Katalogdatei (CAT) für ein Treiberpaket zu erstellen.

  • Mit Administratorrechten kann ein nicht signierter Treiber weiterhin auf x64-basierten Systemen installiert werden, beginnend mit Windows Vista. Der Treiber wird jedoch nicht geladen (und somit ausgeführt), da er nicht signiert ist.

  • Detaillierte Informationen zum Treibersignaturprozess, einschließlich des Treibersignaturprozesses für 64-Bit-Versionen von Windows Vista und höher, finden Sie im Word-Dokument Kernel-Mode Code Signing Walkthrough.

  • Alle Kernelmoduskomponenten, einschließlich benutzerdefinierter Kernelmodus-Entwicklungstools, müssen signiert sein. Weitere Informationen finden Sie in der Einführung in Test-Signing).

INF-Dateien können nicht zum Lesen von Informationen aus der Registrierung oder zum Starten einer Benutzermodusanwendung verwendet werden.

Abschnitte in einer INF-Datei des Dateisystemtreibers

Verwenden Sie die folgenden Informationen als Leitfaden, um ihren eigenen Dateisystemtreiber INF zu erstellen. Sie können das InfVerif-Tool verwenden, um die Syntax Ihrer INF-Datei zu überprüfen.

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

Abschnitt "Version" (erforderlich)

Im Abschnitt "Version " werden die Treiberversionsinformationen angegeben, wie im folgenden Beispiel gezeigt.

[Version]
Signature   = "$WINDOWS NT$"
Provider    = %Msft%
DriverVer   = 08/28/2000,1.0.0.1
CatalogFile =

Die folgende Tabelle zeigt die Werte, die Dateisystemfiltertreiber im Abschnitt "Version " angeben sollen.

Eingabe Wert
Signatur- $WINDOWS NT$
Anbieter In Ihrer eigenen INF-Datei sollten Sie einen anderen Anbieter als Microsoft angeben.
DriverVer Siehe INF DriverVer-Direktive
CatalogFile Siehe Verwenden von Inf2Cat zum Erstellen einer Katalogdatei

Der Abschnitt "DestinationDirs " gibt die Verzeichnisse an, in die die Dateisystemtreiberdateien kopiert werden sollen.

In diesem Abschnitt und im Abschnitt ServiceInstall können Sie bekannte Systemverzeichnisse mithilfe systemdefinierter numerischer Werte angeben. Eine Liste dieser Werte finden Sie im Abschnitt "INF DestinationDirs". Im folgenden Beispiel bezieht sich der Wert "12" auf das Verzeichnis "Drivers" (%windir%\system32\drivers).

[DestinationDirs]
DefaultDestDir = 12
ExampleFileSystem.DriverFiles = 12

Abschnitt SourceDisksNames (erforderlich)

Der Abschnitt "SourceDisksNames" gibt die zu verwendenden Verteilungsmedien an.

Im folgenden Beispiel listet der Abschnitt "SourceDisksNames" ein einzelnes Verteilungsmedium für den Dateisystemtreiber auf. Der eindeutige Bezeichner für die Medien ist 1. Der Name des Mediums wird durch das %Disk1%-Token angegeben, das im Abschnitt " Strings " der INF-Datei definiert ist.

[SourceDisksNames]
1 = %Disk1%

SourceDisksFiles-Abschnitt (erforderlich)

Der Abschnitt "SourceDisksFiles " gibt den Speicherort und die Namen der zu kopierenden Dateien an.

Im folgenden Beispiel listet der Abschnitt "SourceDisksFiles" die Datei auf, die für den Dateisystemtreiber kopiert werden soll, und gibt an, dass die Dateien auf den Medien gefunden werden können, deren eindeutiger Bezeichner 1 ist (dieser Bezeichner wird im Abschnitt "SourceDisksNames" der INF-Datei definiert.)

[SourceDisksFiles]
examplefilesystem.sys = 1

StandardInstallationsabschnitt (erforderlich)

Im Abschnitt "DefaultInstall " kopiert eine CopyFiles-Direktive die Treiberdateien des Dateisystemtreibers an das Ziel, das im Abschnitt "DestinationDirs " angegeben ist.

Die CopyFiles-Direktive sollte nicht auf die Katalogdatei oder die INF-Datei selbst verweisen. SetupAPI kopiert diese Dateien automatisch.

Sie können eine einzelne INF-Datei erstellen, um den Treiber auf mehreren Versionen des Windows-Betriebssystems zu installieren. Dieser Typ von INF-Datei wird erstellt, indem mehrere Abschnitte DefaultInstall, DefaultInstall.Services, DefaultUninstall und DefaultUninstall.Services für jede Betriebssystemversion erstellt werden. 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 TYPs von INF-Datei finden Sie unter Erstellen von INF-Dateien für mehrere Plattformen und Betriebssysteme.

Im folgenden Beispiel kopiert die CopyFiles-Direktive die Dateien, die im Abschnitt "ExampleFileSystem.DriverFiles" der INF-Datei aufgeführt sind.

[DefaultInstall]
OptionDesc = %ServiceDesc%
CopyFiles = ExampleFileSystem.DriverFiles

[ExampleFileSystem.DriverFiles]
examplefilesystem.sys

DefaultInstall.Services Section (erforderlich)

Der Abschnitt "DefaultInstall.Services " enthält eine AddService-Direktive , die steuert, wie und wann die Dienste eines bestimmten Treibers geladen werden.

Im folgenden Codebeispiel fügt die AddService-Direktive dem Betriebssystem den Dateisystemdienst hinzu. Das %ServiceName%-Token enthält die Dienstnamenzeichenfolge, die im Abschnitt " Zeichenfolgen" der INF-Datei definiert ist. ExampleFileSystem.Service ist der Name des ServiceInstall-Abschnitts des Dateisystemtreibers.

[DefaultInstall.Services]
AddService = %ServiceName%,,ExampleFileSystem.Service

ServiceInstall-Abschnitt (erforderlich)

Im Abschnitt "ServiceInstall " werden der Registrierung Unterschlüssel oder Wertnamen hinzugefügt und Werte festgelegt. Der Name des Abschnitts "ServiceInstall " muss in einer AddService-Direktive im Abschnitt "DefaultInstall.Services" angezeigt werden.

Das folgende Beispiel zeigt den Abschnitt "ServiceInstall " für den Dateisystemtreiber.

[ExampleFileSystem.Service]
DisplayName    = %ServiceName%
Description    = %ServiceDesc%
ServiceBinary  = %12%\examplefilesystem.sys
ServiceType    = 2 ;    SERVICE_FILE_SYSTEM_DRIVER
StartType      = 1 ;    SERVICE_SYSTEM_START
ErrorControl   = 1 ;    SERVICE_ERROR_NORMAL
LoadOrderGroup = "File System"
AddReg         = ExampleFileSystem.AddRegistry

Der DisplayName-Eintrag gibt den Namen für den Dienst an. Im vorherigen Beispiel wird die Dienstnamenzeichenfolge durch das %ServiceName%-Token angegeben, das im Abschnitt " Strings " der INF-Datei definiert ist.

Der Eintrag "Description " gibt eine Zeichenfolge an, die den Dienst beschreibt. Im vorherigen Beispiel wird diese Zeichenfolge durch das %ServiceDesc%-Token angegeben, das im Abschnitt " Strings " der INF-Datei definiert ist.

Der ServiceBinary-Eintrag gibt den Pfad zur ausführbaren Datei für den Dienst an. Im vorherigen Beispiel bezieht sich der Wert 12 auf das Verzeichnis "Drivers" (%windir%\system32\drivers).

Der ServiceType-Eintrag gibt den Diensttyp an. In der folgenden Tabelle sind die möglichen Werte für ServiceType und die entsprechenden Diensttypen aufgeführt.

Wert BESCHREIBUNG
0x00000001 SERVICE_KERNEL_DRIVER (Gerätetreiberdienst)
0x00000002 SERVICE_FILE_SYSTEM_DRIVER (Dateisystem- oder Dateisystemfiltertreiberdienst)
0x00000010 SERVICE_WIN32_OWN_PROCESS (Microsoft Win32-Dienst, der in einem eigenen Prozess ausgeführt wird)
0x00000020 SERVICE_WIN32_SHARE_PROCESS (Win32-Dienst, der einen Prozess gemeinsam verwendet)

Der ServiceType-Eintrag sollte immer auf SERVICE_FILE_SYSTEM_DRIVER für einen Dateisystemtreiber festgelegt werden.

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 DIENST_SYSTEM_START
0x00000002 Dienst_Auto_Start
0x00000003 SERVICE_ANFORDERUNG_START
0x00000004 DIENST_DEAKTIVIERT

Ausführliche Beschreibungen dieser Starttypen, um zu bestimmen, welcher für Ihren Dateisystemtreiber geeignet ist, finden Sie unter What Determines When a Driver Is Loaded.

Ab x64-basierten Windows Vista-Systemen muss die Binäre Imagedatei eines Starttreibers (ein Treiber mit einem Starttyp SERVICE_BOOT_START) eine eingebettete Signatur enthalten. Diese Anforderung stellt eine optimale Systemstartleistung sicher. Weitere Informationen finden Sie im Word-DokumentKernel-Mode Code Signing Walkthrough .

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

Der ErrorControl-Eintrag gibt die auszuführende Aktion an, wenn der Dienst beim Systemstart nicht gestartet werden kann. In der folgenden Tabelle sind die möglichen Werte für ErrorControl und die entsprechenden Fehlersteuerungswerte aufgeführt.

Wert BESCHREIBUNG
0x00000000 SERVICE_ERROR_IGNORE (Protokollieren Sie den Fehler, und fahren Sie mit dem Systemstart fort.)
0x00000001 SERVICE_ERROR_NORMAL (Protokollieren Sie den Fehler, zeigen Sie dem Benutzer eine Meldung an, und fahren Sie mit dem Systemstart fort.)
0x00000002 SERVICE_ERROR_SEVERE (Wechseln Sie zur LastKnownGood-Konfiguration der Registrierung und setzen Sie den Systemstart fort.)
0x00000003 SERVICE_ERROR_CRITICAL (Wenn der Systemstart den LastKnownGood-Steuerelementsatz der Registrierung nicht verwendet, wechseln Sie zu LastKnownGood, und versuchen Sie es erneut. Wenn der Start immer noch fehlschlägt, führen Sie eine Fehlerüberprüfungsroutine aus. Nur die Treiber, die für den Start des Systems erforderlich sind, sollten diesen Wert in ihren INF-Dateien angeben.)

Der LoadOrderGroup-Eintrag muss für einen Dateisystemtreiber immer auf "Dateisystem" festgelegt sein. Diese Einstellung unterscheidet sich von dem, was für einen Dateisystemfiltertreiber oder Dateisystem-Minifiltertreiber angegeben ist, bei dem der LoadOrderGroup-Eintrag auf eine der Ladereihenfolgegruppen des Dateisystemfilters festgelegt ist. Weitere Informationen zu den Ladereihenfolgegruppen finden Sie unter Load Order Groups for File System Filter Drivers und Load Order Groups and Altitudes for Minifilter Drivers.

Die AddReg-Direktive bezieht sich auf einen oder mehrere inF writer-defined AddRegistry-Abschnitte , die alle Informationen enthalten, die in der Registrierung für den neu installierten Dienst gespeichert werden sollen.

Wenn die INF-Datei auch für das Upgrade des Treibers nach der erstinstallation verwendet wird, sollten die Einträge, die im Abschnitt "AddRegistry " enthalten sind, das flag 0x00000002 (FLG_ADDREG_NOCLOBBER) angeben. Wenn Sie dieses Kennzeichen angeben, bleiben die Registrierungseinträge in HKLM\CurrentControlSet\Services erhalten, wenn nachfolgende Dateien installiert werden. Beispiel:

[ExampleFileSystem.AddRegistry]
HKR,Parameters,ExampleParameter,0x00010003,1

DefaultUninstall Abschnitt (optional)

Der Abschnitt "DefaultUninstall " ist optional, wird jedoch empfohlen, wenn Ihr Treiber deinstalliert werden kann. Es enthält DelFiles - und DelReg-Direktiven , um Dateien und Registrierungseinträge zu entfernen.

Im folgenden Beispiel entfernt die DelFiles-Direktive die Dateien, die im Abschnitt "ExampleFileSystem.DriverFiles" der INF-Datei aufgeführt sind.

[DefaultUninstall]
DelFiles   = ExampleFileSystem.DriverFiles
DelReg     = ExampleFileSystem.DelRegistry

Die DelReg-Direktive bezieht sich auf einen oder mehrere inF writer-defined DelRegistry-Abschnitte , die alle Informationen enthalten, die aus der Registrierung für den Dienst entfernt werden, der deinstalliert wird.

Standard-Deinstallation.Dienste Abschnitt (optional)

Der Abschnitt "DefaultUninstall.Services " ist optional, wird jedoch empfohlen, wenn Ihr Treiber deinstalliert werden kann. Es enthält DelService-Direktiven , um die Dienste des Dateisystemtreibers zu entfernen.

Im folgenden Beispiel entfernt die DelService-Direktive den Dateisystemtreiberdienst aus dem Betriebssystem.

[DefaultUninstall.Services]
DelService = %ServiceName%,0x200

Die DelService-Direktive sollte immer das 0x200-Flag (SPSVCINST_STOPSERVICE) angeben, um den Dienst zu beenden, bevor der Dienst gelöscht wird.

Es gibt bestimmte Klassen von Dateisystemprodukten, die nicht vollständig deinstalliert werden können. In diesem Fall können Sie einfach die Komponenten des Produkts deinstallieren, die deinstalliert werden können, und die Komponenten verlassen, die nicht deinstalliert werden können. Ein Beispiel für ein solches Produkt ist das Microsoft Single Instance Store (SIS)-Feature.

Abschnitt "Strings" (erforderlich)

Der Abschnitt "Zeichenfolgen" definiert jedes %strkey% Token, das in der INF-Datei verwendet wird.

Der Dateisystemtreiber definiert beispielsweise die folgenden Zeichenfolgen in der INF-Datei.

[Strings]
Msft        = "Microsoft Corporation"
ServiceDesc = "Example File System Driver"
ServiceName = "ExampleFileSystem"
ParameterPath = "SYSTEM\CurrentControlSet\Services\ExampleFileSystem\Parameters"
Disk1       = "Example File System Driver CD"

Sie können eine einzelne internationale INF-Datei erstellen, indem Sie andere gebietsschemaspezifische Zeichenfolgen und LanguageID-Abschnitte in der INF-Datei erstellen. Weitere Informationen zu internationalen INF-Dateien finden Sie unter Creating International INF Files.