Windows.Devices.HumanInterfaceDevice Namespace

Dieser Namespace ermöglicht Ihrer UWP-App Zugriff auf Geräte, die das HID-Protokoll (Human Interface Device) unterstützen.

Geräteunterstützung

Dieser Namespace unterstützt die meisten HIDs. Es bietet jedoch keinen Zugriff auf die obersten Anwendungssammlungen (TLCs), die durch die folgenden Verwendungen dargestellt werden.

Nicht zugängliche Verwendungen.

UsagePage UsageIds
HID_USAGE_PAGE_UNDEFINED (0x00) All
HID_USAGE_PAGE_GENERIC (0x01) HID_USAGE_GENERIC_MOUSE (0x02)
HID_USAGE_GENERIC_KEYBOARD (0x06)
HID_USAGE_GENERIC_KEYPAD (0x07)
HID_USAGE_GENERIC_SYSTEM_CTL (0x80)
HID_USAGE_PAGE_KEYBOARD (0x07) All
HID_USAGE_PAGE_CONSUMER (0x0C) All
HID_USAGE_PAGE_DIGITIZER (0x0D) All
HID_USAGE_PAGE_SENSOR (0x20) All
HID_USAGE_PAGE_LIGHTING_ILLUMINATION (0x59) HID_USAGE_LAMPARRAY (0x01)

Funktionen von Human Interface-Geräten

Eine UWP-App, die auf eine HID zugreift, muss bestimmte Gerätefunktionsdaten im Funktionsknoten ihres Manifests enthalten. Diese Daten identifizieren das Gerät und seinen Zweck (oder seine Funktion). Beachten Sie, dass einige Geräte möglicherweise über mehrere Funktionen verfügen.

Seit Windows 10, Version 1809 (Oktober 2018 Update)

<DeviceCapability Name="humanInterfaceDevice"/>

Wenn sie auf ein HID-Telefoniegerät abzielen (UsagePage==0x0B), muss auch die zusätzliche Funktion hidTelephony angegeben werden.

<DeviceCapability Name="humanInterfaceDevice"/>
<DeviceCapability Name="hidTelephony"/>

Vor Windows 10, Version 1809 (Update vom Oktober 2018)

Seit 1809 müssen die VendorId/ProductId und der Funktionstyp nicht mehr angegeben werden und werden auf neueren Systemen ignoriert. Wenn Systeme vor 1809 anvisieren, sehen Sie sich unten an.

  • <DeviceCapability>: Das Name-Attribut muss sein humanInterfaceDevice.

    • <Gerät>: Das Id-Attribut muss den Gerätebezeichner angeben. Dieses Element kann eine Kombination von Anbieter-ID (vid) und Produkt-ID (pid) angeben. oder kann eine generische Zeichenfolge anyangeben. Darüber hinaus kann die Device Id eine optionale Anbieterzeichenfolge von usb oder bluetoothenthalten.

      • <Funktion>: Das Type-Attribut gibt die Gerätefunktion an. Dieses Element enthält mindestens einen HID-Nutzungswert. Diese Werte bestehen aus einem UsagePage und einem optionalen UsageId, die jeweils 16-Bit-Hexadezimalwerte sind.

In den folgenden vom Hersteller definierten Nutzungsdaten wird das Gerät durch die Kombination Anbieter-ID und Produkt-ID identifiziert.

<DeviceCapability Name="humaninterfacedevice">
    <Device Id="vidpid:0A81 0701">
      <Function Type="usage:ffa0 0001"/>
    </Device>
</DeviceCapability>

Das Folgende ist mit der ersten identisch, mit Ausnahme der zusätzlichen Anbieterzeichenfolge usb im Device Id -Element.

<DeviceCapability Name="humaninterfacedevice">
    <Device Id="vidpid:0A81 0701 usb">
      <Function Type="usage:ffa0 0001"/>
    </Device>
</DeviceCapability>

In den folgenden Gaming-Gerätedaten gibt es keine Anbieter-ID und Keine Produkt-ID.

<!-- Any gamepad device  -->
<DeviceCapability Name="humaninterfacedevice">
    <Device Id="any">
      <Function Type="usage:0005 *"/>
    </Device>
</DeviceCapability>

In den folgenden Joystick- und Spielpaddaten befinden sich keine Anbieter-ID und keine Produkt-ID

<!-- Any generic gaming device  -->
<DeviceCapability Name="humaninterfacedevice">
    <Device Id="any">
      <Function Type="usage:0004 *"/>
      <Function Type="usage:0005 *"/>
    </Device>
</DeviceCapability>

Problembehandlung

  • Vergewissern Sie sich, dass sich die HID-Funktion (humanInterfaceDevice) im Anwendungsmanifest befindet. Wenn ein Telefoniegerät vorhanden ist, stellen Sie sicher, dass die hidTelephony Funktion ebenfalls enthalten ist.
  • Überprüfen Sie, ob der Benutzer der Anwendung die Berechtigung erteilt hat, HIDs zu verwenden.
  • Vergewissern Sie sich, dass der Gerätetyp nicht als nicht zugänglich gekennzeichnet ist.
  • Auf computerinterne Geräte (DEVPKEY_Device_InLocalMachineContainer == TRUE) kann im Allgemeinen nur zugegriffen werden, wenn sie auf einer SKU mit eingebettetem Modus und lowLevelDevices Funktionen ausgeführt werden.
  • Geräte mit Stapeln, die obere/niedrigere Filtertreiber enthalten, sind in der Regel nicht zugänglich. Diese werden manchmal von dritten Parteien hinzugefügt, um zusätzliche Funktionen für benutzerdefinierte Hardware zu aktivieren.
    • Die Geräteeinschränkung wird teilweise durch hidclass.sys die Geräteaufzählung bestimmt, wodurch die Geräteschnittstelleneigenschaft DEVPKEY_DeviceInterface_RestrictedTRUE auf der HID-Geräteschnittstelle GUID_DEVINTERFACE_HID basierend auf dem Vorhandensein von Geräte-/Klassenfiltern festgelegt werden kann.
    • Das Vorhandensein von UpperFilter/LowerFilter-Treibern des Geräts kann mithilfe von DeviceManager ermittelt werden, indem Nach und LowerFilters Eigenschaften gesucht UpperFilters werden.
    • Das Vorhandensein von Treibern der HID-Klasse UpperFilter/LowerFilter kann mithilfe von DeviceManager ermittelt werden, indem Sie nach eigenschaften und Class lower filters suchenClass upper filters.
    • Geräteschnittstelleneigenschaften können überprüft werden, indem aufgerufen CM_Get_Device_Interface_Property wird, wobei pszDeviceInterface dieselbe Zeichenfolge wie an FromIdAsync übergeben wird.
  • Diese Einschränkungen können beim Erstellen eines benutzerdefinierten Geräts umgangen werden, indem Sie mit dem Treiberentwickler zusammenarbeiten, um eine Hardwaresupport-App zu erstellen.

Klassen

HidBooleanControl

Stellt ein einfaches boolesches Steuerelement auf einem HID-Gerät dar, das Ein-/Aus-Werte zurückgibt. Ein Beispiel wäre das LED-Licht auf einer Tastatur.

HidBooleanControlDescription

Beschreibt ein boolesches Steuerelement für ein bestimmtes HID-Gerät.

HidCollection

Ruft die Sammlungsinformationen für eine Gruppe verwandter Steuerelemente ab.

Das HID-Protokoll verwendet Sammlungen, um eine Gruppe von Steuerelementen zu gruppieren, die einander ähneln oder durch physische oder betriebliche Nähe miteinander verbunden sind.

HidDevice

Stellt eine Auflistung der obersten Ebene und das entsprechende Gerät dar.

HidFeatureReport

Stellt einen HID-Featurebericht dar.

Featureberichte werden sowohl vom Gerät als auch vom Host ausgegeben. Geräte geben Featureberichte aus, um ihre Funktionen und Standardeinstellungen für einen Host zu beschreiben. Hostet Featureberichte, um Anforderungen an das Gerät zu stellen.

HidInputReport

Stellt einen HID-Eingabebericht dar.

Geräte geben Eingabeberichte aus, um Zustandsänderungen, Benutzereingaben und andere gerätespezifische Daten zu beschreiben. Beispielsweise würde ein HID-Tastaturgerät einen Eingabebericht verwenden, um einen Tastendruck zu signalisieren. Ein HID-Anwesenheitssensor verwendet einen Eingabebericht, um ein Anwesenheitserkennungsereignis zu signalisieren.

HidInputReportReceivedEventArgs

Stellt die Argumente dar, die die HID-API als Teil eines Eingabeberichtereignisses sendet.

HidNumericControl

Stellt ein numerisches Steuerelement auf einem HID-Gerät dar, das einen Wertebereich zurückgibt. Ein Beispiel wäre die Lautstärkeregelung eines Lautsprechers.

HidNumericControlDescription

Beschreibt ein numerisches Steuerelement für ein bestimmtes HID-Gerät.

HidOutputReport

Stellt einen HID-Ausgabebericht dar.

Hosts geben Ausgabeberichte aus, um Änderungen auf dem Gerät anzufordern. Beispielsweise könnte ein Host eine Anforderung an eine Tastatur stellen, um eine LED ein- oder auszuschalten.

Enumerationen

HidCollectionType

Gibt die Beziehung an, die eine Gruppierung von Steuerelementen auf dem Gerät definiert.

Sammlungen sind eine Möglichkeit, eine Gruppe von Steuerelementen zu gruppieren, die einander ähneln. oder durch physische oder betriebliche Nähe miteinander verbunden sind.

HidReportType

Gibt einen HID-Berichtstyp an.

Weitere Informationen