Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bei bestimmten USB-Geräten (Universal Serial Bus) können Sie WinUSB (Winusb.sys) installieren, anstatt einen Treiber zu implementieren.
Wichtig
Dieser Artikel richtet sich an Programmierer. Wenn ein Kunde USB-Probleme hat, lesen Sie "Beheben USB-C Probleme in Windows".
Automatische Installation von WinUSB ohne INF-Datei
Als OEM oder unabhängiger Hardwareanbieter (IHV) können Sie Ihr Gerät so erstellen, dass die Winusb.sys automatisch installiert wird. Ein solches Gerät wird als WinUSB-Gerät bezeichnet und erfordert nicht, dass Sie eine benutzerdefinierte INF-Datei schreiben, die auf "Winusb.inf" verweist.
Wenn Sie ein WinUSB-Gerät verbinden, liest Windows Geräteinformationen und lädt Winusb.sys automatisch.
Weitere Informationen finden Sie unter WinUSB-Gerät.
Installieren von WinUSB durch Angabe der vom System bereitgestellten Geräteklasse
Wenn Sie Ihr Gerät verbinden, stellen Sie möglicherweise fest, dass Windows Winusb.sys automatisch lädt. Führen Sie andernfalls die folgenden Anweisungen aus, um den Treiber zu laden:
- Schließen Sie Ihr Gerät an das Host-System an.
- Öffnen Sie den Geräte-Manager , und suchen Sie das Gerät.
- Klicken Sie mit der rechten Maustaste auf das Gerät, und wählen Sie " Treibersoftware aktualisieren" aus dem Kontextmenü aus.
- Wählen Sie im Assistenten Auf meinem Computer nach Treibersoftware suchen.
- Wählen Sie Aus einer Liste von Gerätetreibern auf meinem Computer auswählen.
- Wählen Sie in der Liste der Geräteklassen Universal-Serial-Bus-Geräte.
- Der Assistent zeigt WinUsb-Gerät an. Wählen Sie es aus, um den Treiber zu laden.
Wenn universelle serielle Busgeräte nicht in der Liste der Geräteklassen angezeigt werden, müssen Sie den Treiber mithilfe eines benutzerdefinierten INF installieren. Im vorherigen Verfahren wird keine Geräteschnittstellen-GUID für eine App (UWP-App oder Windows-Desktop-App) für den Zugriff auf das Gerät hinzugefügt. Sie müssen die GUID manuell hinzufügen, indem Sie dieses Verfahren befolgen.
Laden Sie den Treiber wie in der vorangegangenen Prozedur beschrieben.
Generieren Sie eine Geräteschnittstellen-GUID für Ihr Gerät mithilfe eines Tools wie guidgen.exe.
Suchen Sie den Registrierungsschlüssel für das Gerät unter diesem Schlüssel:
<HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_vvvv&PID_pppp>
Fügen Sie unter dem Schlüssel Geräteparameter einen Zeichenfolgen-Registrierungseintrag namens DeviceInterfaceGUID oder einen Mehrzeichenfolgen-Registrierungseintrag namens DeviceInterfaceGUIDs hinzu. Legen Sie den Wert auf die GUID fest, die Sie in Schritt 2 erstellt haben.
Trennen Sie das Gerät vom System, und schließen Sie es wieder an denselben physischen Port an.
Hinweis
Wenn Sie den physischen Port ändern, müssen Sie die Schritte 1 bis 4 wiederholen.
Schreiben einer angepassten INF für die WinUSB-Installation
Als Teil des Treiberpakets stellen Sie eine INF-Datei bereit, die Winusb.sys als Funktionstreiber für das USB-Gerät installiert.
Hier ist ein Beispiel für eine universelle INF-Datei, die für x64- und ARM64-Plattformen mit Windows 10 oder höher gültig ist. In diesem Beispiel sind keine Coinstaller enthalten, sodass es vom Hardware Developer Center-Dashboardportal signiert werden kann.
;
; Universal INF file for WinUsb installation
;
[Version]
Signature = "$Windows NT$"
Class = USBDevice
ClassGUID = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}
Provider = %ManufacturerName%
CatalogFile = WinUSBInstallation.cat
DriverVer = 09/04/2012,13.54.20.543
PnpLockdown = 1
; ========== Manufacturer and Models sections ===========
[Manufacturer]
%ManufacturerName% = Standard,NTamd64,NTarm64
[Standard.NTamd64]
%DeviceName% =USB_Install, USB\VID_0547&PID_1002
[Standard.NTarm64]
%DeviceName% =USB_Install, USB\VID_0547&PID_1002
; =================== Installation ===================
[USB_Install]
Include = winusb.inf
Needs = WINUSB.NT
[USB_Install.Services]
Include =winusb.inf
Needs = WINUSB.NT.Services
[USB_Install.HW]
AddReg=Dev_AddReg
[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{9f543223-cede-4fa3-b376-a25ce9a30e74}"
; =================== Strings ===================
[Strings]
ManufacturerName="Contoso"
ClassName="Universal Serial Bus devices"
DeviceName="Fx2 Learning Kit Device"
REG_MULTI_SZ = 0x00010000
Diese universelle INF-Datei kann auf mehreren Windows-Plattformen (x64 und ARM64) verwendet werden und ist berechtigt, vom Hardware Developer Center Dashboard-Portal signiert zu werden.
Um nur eine neue benutzerdefinierte Geräteeinrichtungsklasse zu installieren, schließen Sie einen ClassInstall32-Abschnitt in eine INF-Datei des Geräts ein. INF-Dateien für Geräte in einer installierten Klasse, unabhängig davon, ob es sich um eine vom System bereitgestellte Geräteeinrichtungsklasse oder eine angepasste Klasse handelt, dürfen keinen ClassInstall32-Abschnitt enthalten.
Mit Ausnahme der gerätespezifischen Werte und einiger Probleme, die in der folgenden Liste aufgeführt sind, können Sie diese Abschnitte und Richtlinien verwenden, um WinUSB für jedes USB-Gerät zu installieren. Diese Listenelemente beschreiben die Includes und Directives in der vorangehenden INF-Datei.
USB_Install: Die Richtlinien Include und Needs im Abschnitt USB_Install sind für die Installation von WinUSB erforderlich. Sie sollten diese Direktiven nicht ändern.
USB_Install.Services: Die Richtlinie Include im Abschnitt USB_Install.Services enthält die vom System bereitgestellte INF für WinUSB (Winusb.inf). Windows installiert diese INF-Datei, wenn sie noch nicht auf dem Zielsystem installiert ist. Die Richtlinie Needs gibt den Abschnitt in Winusb.inf an, der Informationen enthält, die für die Installation von Winusb.sys als Funktionstreiber des Geräts erforderlich sind. Sie sollten diese Direktiven nicht ändern.
USB_Install.HW: Dieser Abschnitt ist der Schlüssel in der INF-Datei. Er gibt den global eindeutigen Bezeichner (GUID) der Geräteschnittstelle für Ihr Gerät an. Die Richtlinie AddReg legt die angegebene Schnittstellen-GUID in einem Standardwert der Registrierung fest. Wenn Winusb.sys als Funktionstreiber des Geräts geladen wird, liest es den Registrierungswert DeviceInterfaceGUIDs Schlüssel und verwendet die angegebene GUID, um die Geräteschnittstelle darzustellen. Sie sollten die GUID in diesem Beispiel durch eine GUID ersetzen, die Sie speziell für Ihr Gerät erstellen. Wenn sich die Protokolle für das Gerät ändern, erstellen Sie eine neue Geräteschnittstellen-GUID.
Hinweis
Benutzermodussoftware muss SetupDiGetClassDevs aufrufen, um die registrierten Geräteschnittstellen aufzählen zu können, die einer der geräteschnittstellenklassen zugeordnet sind, die unter dem Schlüssel "DeviceInterfaceGUIDs" angegeben sind. SetupDiGetClassDevs gibt das Geräte-Handle für das Gerät zurück, das die Benutzermodus-Software dann an die WinUsb_Initialize-Routine übergeben muss, um ein WinUSB-Handle für die Geräteschnittstelle abzurufen. Weitere Informationen zu diesen Routinen finden Sie unter Zugriff auf ein USB-Gerät mit Hilfe von WinUSB-Funktionen.
Jedes Mal, wenn Winusb.sys geladen wird, registriert es eine Geräteschnittstelle mit den Geräteschnittstellenklassen, die in der Registrierung unter dem Schlüssel DeviceInterfaceGUIDs angegeben sind.
HKR,,DeviceInterfaceGUIDs, 0x10000,"{D696BFEB-1734-417d-8A04-86D01071C512}"
So erstellen Sie ein Treiberpaket, das Winusb.sys installiert
Um WinUSB als Funktionstreiber des Geräts zu verwenden, erstellen Sie ein Treiberpaket. Hier sind die Schritte, um ein Treiberpaket zu erstellen, das Winusb.sys installiert:
Laden Sie das Windows Driver Kit (WDK) herunter , und installieren Sie es auf Ihrem Computer.
Erstellen Sie einen Treiberpaketordner auf Ihrem System, in dem das USB-Gerät angeschlossen ist, z. B. C:\UsbDevice.
Schreiben Sie eine INF-Datei, die Winusb.sys als Funktionstreiber für das USB-Gerät installiert, und speichern Sie sie im Treiberpaketordner. Ein Beispiel dafür, wie Sie diese Datei schreiben können, finden Sie im Abschnitt zum Erstellen einer benutzerdefinierten INF für die WinUSB-Installation dieses Dokuments.
Erstellen Sie eine signierte Katalogdatei für das Paket. Diese Datei ist erforderlich, um WinUSB unter Windows zu installieren. Weitere Informationen zum Erstellen und Testen signierter Katalogdateien finden Sie unter Kernel-Mode Anleitung zur Codesignierung auf der Windows Dev Center - Hardwarewebsite.
Schließen Sie das USB-Gerät an Ihren Computer an.
Öffnen Sie den Geräte-Manager auf Ihrem Computer. Folgen Sie den Anweisungen des Assistenten zum Aktualisieren der Treibersoftware, und wählen Sie die manuelle Installation. Wenn Sie dazu aufgefordert werden, geben Sie den Speicherort des Treiberpaketordners an, um die Installation abzuschließen.