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
any
angeben. Darüber hinaus kann dieDevice Id
eine optionale Anbieterzeichenfolge vonusb
oderbluetooth
enthalten.- <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 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 diehidTelephony
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.
- 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 undlowLevelDevices
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äteschnittstelleneigenschaftDEVPKEY_DeviceInterface_Restricted
TRUE
auf der HID-GeräteschnittstelleGUID_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 gesuchtUpperFilters
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, wobeipszDeviceInterface
dieselbe 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. |