Windows.Devices.HumanInterfaceDevice Namespace
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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) |
- Tastatur- und Mausgeräte sind vom System reservierte Geräte.
- LampArray-HIDs können mit HidDevice.GetDeviceSelector aufgelistet werden, müssen jedoch mit LampArray.FromIdAsync instanziiert werden.
- Sensor-HIDs können mit HidDevice.GetDeviceSelector aufgelistet werden, müssen jedoch mit dem jeweiligen Windows.Devices.Sensors-Gerät instanziiert werden (z. B. LightSensor.FromIdAsync).
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>: Das Name-Attribut muss sein
humanInterfaceDevice.
<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 dieDevice Ideine optionale Anbieterzeichenfolge vonusboderbluetoothenthalten.-
<Funktion>: Das Type-Attribut gibt die Gerätefunktion an. Dieses Element enthält mindestens einen HID-Nutzungswert. Diese Werte bestehen aus einem
UsagePageund einem optionalenUsageId, die jeweils 16-Bit-Hexadezimalwerte sind.
-
<Funktion>: Das Type-Attribut gibt die Gerätefunktion an. Dieses Element enthält mindestens einen HID-Nutzungswert. Diese Werte bestehen aus einem
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 diehidTelephonyFunktion 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.
- Nicht zugängliche HIDs werden möglicherweise weiterhin von DeviceInformation.FindAllAsync()aufgelistet, können aber nicht von HumanInterfaceDevice.FromIdAsync()geöffnet werden. Durch das Attemping zum Öffnen eines solchen Geräts wird entweder eine Ausnahme ausgelöst oder zurückgegeben
null.
- Nicht zugängliche HIDs werden möglicherweise weiterhin von DeviceInformation.FindAllAsync()aufgelistet, können aber nicht von HumanInterfaceDevice.FromIdAsync()geöffnet werden. Durch das Attemping zum Öffnen eines solchen Geräts wird entweder eine Ausnahme ausgelöst oder zurückgegeben
- Auf computerinterne Geräte (
DEVPKEY_Device_InLocalMachineContainer == TRUE) kann im Allgemeinen nur zugegriffen werden, wenn sie auf einer SKU mit eingebettetem Modus undlowLevelDevicesFunktionen 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.sysdie Geräteaufzählung bestimmt, wodurch die GeräteschnittstelleneigenschaftDEVPKEY_DeviceInterface_RestrictedTRUEauf der HID-GeräteschnittstelleGUID_DEVINTERFACE_HIDbasierend 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
LowerFiltersEigenschaften gesuchtUpperFilterswerden. - Das Vorhandensein von Treibern der HID-Klasse UpperFilter/LowerFilter kann mithilfe von DeviceManager ermittelt werden, indem Sie nach eigenschaften und
Class lower filterssuchenClass upper filters. - Geräteschnittstelleneigenschaften können überprüft werden, indem aufgerufen
CM_Get_Device_Interface_Propertywird, wobeipszDeviceInterfacedieselbe Zeichenfolge wie an FromIdAsync übergeben wird.
- Die Geräteeinschränkung wird teilweise durch
- 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. |