Delen via


Installatie van WinUSB (Winusb.sys) voor ontwikkelaars

Voor bepaalde USB-apparaten (Universal Serial Bus) kunt u WinUSB (Winusb.sys) installeren in plaats van een stuurprogramma te implementeren.

Belangrijk

Dit artikel is bedoeld voor programmeurs. Als u een klant bent die USB-problemen ondervindt, raadpleegt u Problemen met USB-C oplossen in Windows

Automatische installatie van WinUSB zonder INF-bestand

Als OEM of onafhankelijke hardwareleverancier (IHV) kunt u uw apparaat bouwen zodat de Winusb.sys automatisch wordt geïnstalleerd. Een dergelijk apparaat wordt een WinUSB-apparaat genoemd en vereist niet dat u een aangepast INF-bestand schrijft dat verwijst naar in-box Winusb.inf.

Wanneer u een WinUSB-apparaat verbindt, leest Windows apparaatgegevens en laadt Winusb.sys automatisch.

Zie WinUSB-apparaat voor meer informatie.

WinUSB installeren door de door het systeem geleverde apparaatklasse op te geven

Wanneer u uw apparaat verbindt, ziet u mogelijk dat Windows automatischWinusb.sys laadt. Volg anders deze instructies om het stuurprogramma te laden:

  1. Sluit uw apparaat aan op het hostsysteem.
  2. Open Apparaatbeheer en zoek het apparaat.
  3. Klik met de rechtermuisknop op het apparaat en selecteer Stuurprogrammasoftware bijwerken... in het contextmenu.
  4. In de wizard selecteer Bladeren op mijn computer naar stuurprogramma-software.
  5. Selecteer Laat me kiezen uit een lijst met apparaatstuurprogramma's op mijn computer.
  6. Selecteer Universal Serial Bus-apparaten in de lijst met apparaatklassen.
  7. De wizard geeft WinUsb-apparaat weer. Selecteer om het stuurprogramma te laden.

Als Universal Serial Bus-apparaten niet worden weergegeven in de lijst met apparaatklassen, moet u het stuurprogramma installeren met behulp van een aangepaste INF. In de voorgaande procedure wordt er geen GUID voor een apparaatinterface toegevoegd, waardoor een app (UWP-app of Windows-bureaublad-app) geen toegang heeft tot het apparaat. U moet de GUID handmatig toevoegen door deze procedure te volgen.

  1. Laad het stuurprogramma zoals beschreven in de voorgaande procedure.

  2. Genereer een apparaatinterface-GUID voor uw apparaat met behulp van een hulpprogramma zoals guidgen.exe.

  3. Zoek de registersleutel voor het apparaat onder deze sleutel:

    <HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_vvvv&PID_pppp>

  4. Voeg onder de sleutel Apparaatparameters een registervermelding Tekenreeks toe met de naam DeviceInterfaceGUID of een vermelding met meerdere tekenreeksen met de naam DeviceInterfaceGUIDs. Stel de waarde in op de GUID die u in stap 2 hebt gegenereerd.

  5. Koppel het apparaat los van het systeem en maak opnieuw verbinding met dezelfde fysieke poort.

    Opmerking

    Als u de fysieke poort wijzigt, moet u stap 1 tot en met 4 herhalen.

Een aangepaste INF schrijven voor WinUSB-installatie

Als onderdeel van het stuurprogrammapakket geeft u een INF-bestand op dat Winusb.sys installeert als het functiestuurprogramma voor het USB-apparaat.

Hier volgt een voorbeeld van een universeel INF-bestand dat geldig is voor zowel x64- als ARM64-platforms met Windows 10 of hoger. Dit voorbeeld bevat geen coinstalleerfuncties, waardoor deze in aanmerking komt voor ondertekening door de dashboardportal van het Hardware Developer Center .

;
; 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

Dit universele INF-bestand kan worden gebruikt op meerdere Windows-platforms (x64 en ARM64) en komt in aanmerking voor ondertekening door de dashboardportal van het Hardware Developer Center .

Als u alleen een nieuwe aangepaste apparaatinstallatieklasse wilt installeren, neemt u een classInstall32-sectie op in een INF-apparaatbestand. INF-bestanden voor apparaten in een geïnstalleerde klasse, ongeacht of een door het systeem geleverde apparaatinstallatieklasse of een aangepaste klasse, geen sectie ClassInstall32 mag bevatten.

Behalve voor apparaatspecifieke waarden en verschillende problemen die worden vermeld in de volgende lijst, kunt u deze secties en instructies gebruiken om WinUSB te installeren voor elk USB-apparaat. Deze lijstitems beschrijven de insluitingen en richtlijnen in het voorgaande .inf-bestand.

  • USB_Install: De instructies Opnemen en Behoeften in de sectie USB_Install zijn vereist voor het installeren van WinUSB. U moet deze instructies niet wijzigen.

  • USB_Install.Services: de instructie Include in de sectie USB_Install.Services bevat het door het systeem geleverde .inf voor WinUSB (Winusb.inf). Windows installeert dit .inf-bestand als dit nog niet op het doelsysteem staat. De instructie Behoeften geeft de sectie in Winusb.inf die informatie bevat die nodig is om Winusb.sys te installeren als het functiestuurprogramma van het apparaat. U moet deze instructies niet wijzigen.

  • USB_Install.HW: Deze sectie is de sleutel in het INF-bestand. Hiermee geeft u de GUID (Globally Unique Identifier) van de apparaatinterface voor uw apparaat op. De AddReg-instructie stelt de opgegeven interface-GUID in een standaardregisterwaarde in. Wanneer Winusb.sys wordt geladen als het functiestuurprogramma van het apparaat, wordt de registerwaarde DeviceInterfaceGUIDs-sleutel gelezen en wordt de opgegeven GUID gebruikt om de apparaatinterface weer te geven. Vervang de GUID in dit voorbeeld door een GUID die u specifiek voor uw apparaat maakt. Als de protocollen voor het apparaat worden gewijzigd, maakt u een nieuwe GUID voor de apparaatinterface.

    Opmerking

    Software in de gebruikersmodus moet SetupDiGetClassDevs aanroepen om de geregistreerde apparaatinterfaces op te sommen die zijn gekoppeld aan een van de apparaatinterfaceklassen die zijn opgegeven onder de sleutel DeviceInterfaceGUIDs. SetupDiGetClassDevs retourneert de apparaatgreep voor het apparaat dat de gebruikersmodussoftware vervolgens moet doorgeven aan de WinUsb_Initialize routine om een WinUSB-ingang voor de apparaatinterface te verkrijgen. Zie How to Access a USB Device by Using WinUSB Functions (Een USB-apparaat openen met WinUSB-functies) voor meer informatie over deze routines.

Telkens wanneerWinusb.sys wordt geladen, wordt een apparaatinterface geregistreerd met de apparaatinterfaceklassen die zijn opgegeven in het register onder de DeviceInterfaceGUIDs-sleutel .

HKR,,DeviceInterfaceGUIDs, 0x10000,"{D696BFEB-1734-417d-8A04-86D01071C512}"

Een stuurprogrammapakket maken dat Winusb.sys installeert

Als u WinUSB wilt gebruiken als het functiestuurprogramma van het apparaat, maakt u een stuurprogrammapakket. Hier zijn de stappen om een stuurprogrammapakket te maken dat Winusb.sys installeert:

  1. Download de Windows Driver Kit (WDK) en installeer deze op uw computer.

  2. Maak een stuurprogrammapakketmap op uw systeem waarop het USB-apparaat is aangesloten, bijvoorbeeld C:\UsbDevice.

  3. Schrijf een INF-bestand dat Winusb.sys installeert als het functiestuurprogramma voor het USB-apparaat en sla het op in de map van het stuurprogrammapakket. Een voorbeeld van het schrijven van dit bestand vindt u in de sectie Een aangepaste INF schrijven voor WinUSB-installatie van dit document.

  4. Maak een ondertekend catalogusbestand voor het pakket. Dit bestand is vereist voor het installeren van WinUSB in Windows. Meer informatie over het maken en testen van ondertekende catalogusbestanden vindt u in Kernel-Mode handleiding voor ondertekening van programmacode in het Windows Dev Center - Hardware.

    Diagram met de inhoud van een WinUSB-stuurprogrammainstallatiepakket

  5. Sluit het USB-apparaat aan op uw computer.

  6. Open Apparaatbeheer op uw computer. Volg de instructies in de wizard Stuurprogrammasoftware bijwerken en kies handmatige installatie. Geef desgevraagd de locatie op van de map van het stuurprogrammapakket om de installatie te voltooien.