/// <summary> /// Initializes a new instance of the <see cref="GorgonRawHIDInfo"/> class. /// </summary> /// <param name="deviceHandle">The device handle.</param> /// <param name="hidPath">The hid path.</param> /// <param name="className">Name of the class.</param> /// <param name="description">The description.</param> /// <param name="deviceInfo">The device information.</param> internal GorgonRawHIDInfo(IntPtr deviceHandle, string hidPath, string className, string description, RID_DEVICE_INFO_HID deviceInfo) { Handle = deviceHandle; HIDPath = hidPath; DeviceClass = className; Description = description; ProductID = deviceInfo.dwProductId; VendorID = deviceInfo.dwVendorId; Version = deviceInfo.dwVersionNumber; Usage = (HIDUsage)deviceInfo.usUsage; UsagePage = (HIDUsagePage)deviceInfo.usUsagePage; }
/// <summary> /// Registers the device. /// </summary> /// <param name="hidUsagePage"> The HID usage page. </param> /// <param name="hidUsage"> The HID usage. </param> /// <param name="rawInputDeviceFlags"> The raw input device flags. </param> /// <param name="hWndTarget"> The window target. </param> public static void RegisterDevice(HIDUsagePage hidUsagePage, HIDUsage hidUsage, RawInputDeviceFlags rawInputDeviceFlags, IntPtr hWndTarget) { RAWINPUTDEVICE[]? rawInputDevices = new RAWINPUTDEVICE[1]; rawInputDevices[0].UsagePage = hidUsagePage; rawInputDevices[0].Usage = hidUsage; rawInputDevices[0].Flags = rawInputDeviceFlags; rawInputDevices[0].WindowHandle = hWndTarget; if (!User32.RegisterRawInputDevices(rawInputDevices, 1, Marshal.SizeOf <RAWINPUTDEVICE>())) { throw new Win32Exception(Kernel32.GetLastError(), $"{nameof(User32.RegisterRawInputDevices)} failed!"); } }