Beispiel #1
0
        /// <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;
        }
Beispiel #2
0
        /// <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!");
            }
        }