Freigeben über


Plug & Play Unterstützung für HID über SPI

In diesem Artikel wird die Plug-and-Play-Unterstützung für Geräte beschrieben, die HID über den SPI-Transport unterstützen.

Treiberladen

Windows lädt den HID SPI-Klassentreiber basierend auf einer kompatiblen Bezeichner-Übereinstimmung zwischen einem Hardwarebezeichner und dem INF. Der Bezeichner wird von advanced Configuration and Power Interface (ACPI) generiert. Der Hardwarebezeichner wird für den SPI-Geräteknoten in ACPI generiert. Alle HID SPI-kompatiblen Geräte müssen zusätzlich zu einem eindeutigen Hardwarebezeichner den Kompatibilitätsbezeichner verfügbar machen.

Die ACPI 5.0-Spezifikation enthält Unterstützung für HID-Klassengeräte. Die ACPI-Definitionen für HID SPI sind wie folgt:

Feld Wert ACPI-Objekt Format Kommentare
Hardware-ID Herstellerspezifisch _HID Zeichenfolge im Format VVVVdddd (z. B. MSFT0011) VendorID + DeviceID
Kompatible ID PNP0C51 _CID Zeichenfolge im Format ACPIxxxx oder PNPxxxx CompatibleID
Subsystem Herstellerspezifisch _SUB Zeichenfolge im Format von VVVVssss (z. B. MSFQ1234) SubVendorID + SubSystemID
Hardwarerevision Herstellerspezifisch _HRV 0xRRRR (2Byte Revision) Hardwarerevisionsnummer
Aktuelle Ressourceneinstellungen Herstellerspezifisch _CRS Bytedatenstrom - SpiSerialBus für den Zugriff auf das Gerät.
- GpioInt für Interrupts.
Gerätespezifische Methode GUID {6e2ac436-0fcf-41af-a265-b32a220dcfab} _DSM Paket Definiert eine Struktur, die gerätespezifische Informationen enthält.
Gerätezurücksetzungsmethode   _RST   ACPI 6.0 7.3.25-kompatible Gerätezurücksetzungsmethode, die vom Hostbetriebssystem als ACPI FLDR aufgerufen werden soll.

Jedes HID SPI-Gerät muss die folgenden Pflichtfelder bereitstellen:

  • Hardware-ID
  • Kompatible ID
  • Hardwarerevision
  • Aktuelle Ressourceneinstellungen
  • Gerätespezifische Methode
  • Gerätezurücksetzungsmethode

Weitere Informationen finden Sie in der ACPI 6.0-Spezifikation (Advanced Configuration and Power Interface).

Im Folgenden finden Sie ein Beispiel für eine Hardware-IDs und kompatible IDs für ein zufälliges HID SPI-Gerät. Diese Details basieren auf einem Beispielgerät, das sich selbst als HID mit einer Sammlung der Klasse "herstellerspezifisch" der obersten Ebene meldet.

Advanced Configuration and Power Interface (ACPI) generiert die folgenden Hardware-IDs und kompatiblen IDs, um den HID SPI-Transporttreiber zu laden:

Hardwarebezeichner: Kompatible Bezeichner

ACPI\Vid_xxxx&Pid_yyyy&Rev_zzzz;: ACPI\PNP0C51

ACPI\Vid_xxxxPid_yyyy;:

ACPI\xxxxyyyy;:

Im vorherigen Beispiel wurde die Hardware-ID mithilfe der Werte generiert, die aus der _HID ACPI-Methode für das Beispielgerät extrahiert wurden. Die kompatible ID wird mithilfe der Werte generiert, die aus der _CID ACPI-Methode für das Beispielgerät extrahiert wurden. Die kompatible ID für eine HID über SPI muss für Version 1.0 immer PNP0C51 sein.

Hinweis

Wenn Sie ein INF angeben, sollten Sie nur die Hardwarebezeichner in der linken Spalte der vorherigen Tabelle verwenden. (Verwenden Sie nicht den kompatiblen Bezeichner in der rechten Spalte.)

Die Hardware-ID für den HID-Clientgeräteknoten, der von der komponente HIDClass.sys generiert wird, lautet wie folgt:

Hardwarebezeichner: Kompatibler Bezeichner

HID\VEN_MSFT&DEV_0010&REV_0002&Col01;: N/A

-HID\VEN_MSFT&DEV_0010&Col01 HID\MSFT0010&Col01;: N/A

-HID\*MSFT0010Col01: N/A

-HID_DEVICE_UP:FF00_U:0001;: N/A

-HID_DEVICE: N/A

Die Hardware-ID wird von HIDClass.sys generiert und ist für alle Transporte identisch. Dieser Bezeichner basiert auf Werten, die von HIDSPI.SYS (aus ACPI extrahiert) an HIDClass.sys übergeben werden.

Sequenz der Geräteenumeration

Sobald ein HID SPI-Gerätetreiber (HIDSPI.SYS) geladen wurde, beginnt er mit der Kommunikation mit dem Gerät über den SPI-Bus. Der erste Vorgang, den der Treiber ausführt, ist die Sequenz der Geräteenumeration.

Die folgende Liste enthält die Enumerationssequenz. Die Reihenfolge dieser Liste kann sich in zukünftigen Versionen von Windows ändern.

  1. Rufen Sie den ACPI Source Language (ASL) -Code für das HID SPI-Gerät aus dem System-BIOS ab.

  2. Ausgeben einer vom Host initiierten Zurücksetzung auf das Gerät

    • Aufrufen der ACPI-_RST-Methode
    • Gerät bestätigt GPIO-Interrupt
    • Host liest die Zurücksetzungsantwort vom Gerät
  3. HiD-Deskriptor vom Gerät abrufen

    • Host schreibt HID-Deskriptoranforderung
    • Gerät bestätigt GPIO-Interrupt
    • Host liest HID-Deskriptorantwort
  4. Abrufen des Berichtsdeskriptors

    • Host writes report descriptor request (Host schreibt Berichtsdeskriptoranforderung)
    • Gerät bestätigt GPIO-Interrupt
    • Antwort des Hostleseberichts

Wenn der Host keine der Schritte mit dem Gerät erfolgreich ausführen kann, wird der HIDSPI-Treiber möglicherweise mit dem Fehlerwert Code 10 geladen. Der Host kann das Zurücksetzen des Geräts erneut durchführen, wenn keine Antwort empfangen wird. Die Wiederholungslogik ist jedoch nicht garantiert.

HID-Berichtsvorgänge

Die folgende Tabelle bietet eine Übersicht über die HID-Berichtsvorgänge, die vom HID-SPI-Protokoll unterstützt werden, sowie der Eingabe- und Ausgabeberichte, die für die Ausführung des Vorgangs verwendet werden.

HID-Berichtstyp Vorgang Ausgabeberichtstyp Eingabeberichtstyp
Eingabebericht GET 0x06
(Anforderung – leerer Inhalt)
0x0B
(Antwort)
Eingabebericht SET
(Nicht unterstützt)
Eingabebericht INTERRUPT IN N/A – Keine Anforderung 0x01
Featurebericht GET 0x04
(Anforderung – leerer Inhalt)
0x05
(Antwort)
Featurebericht SET 0x03 0x09
(Bestätigung – leerer Inhalt)
Ausgabebericht GET
(Nicht unterstützt)
Ausgabebericht SET 0x05 0x0A
(Bestätigung – leerer Inhalt)

Protokollvorgänge

Vorgang Anforderungsberichtstyp Antwortberichtstyp
Gerätedeskriptoranforderung 0x01 0x7
Berichtsdeskriptoranforderung 0x02 0x8
Befehlsanforderung 0x07 0x4
Antwort zurücksetzen 0x3

Weitere Informationen

ACPI Source Language (ASL)