/* get vid and pid */
        private HiddAttributtes GetVidPid(SafeFileHandle handle)
        {
            /* attributes structure */
            var attr = new HiddAttributtes();

            /* set size */
            attr.Size = Marshal.SizeOf(attr);

            /* get attributes */
            if (HIDNativeAPIs.HidD_GetAttributes(handle.DangerousGetHandle(), ref attr) == false)
            {
                /* fail! */
                throw new Win32Exception();
            }
            return(attr);
        }
        public HIDInfo(IntPtr _hidInfoSet, DeviceInterfaceData _iface, out bool isWork)
        {
            hidInfoSet = _hidInfoSet;
            iface      = _iface;
            //Get HW Path
            string devPath = GetPath(hidInfoSet, ref iface);

            //Open HID HW
            hidHWDev = new HIDHWDev(devPath);
            isWork   = false;
            if (hidHWDev.OpenAsync())
            {
                hidInfoStruct = new HIDInfoStruct()
                {
                    Manufacturer = GetManufacturer(hidHWDev.HIDHandel),
                    Product      = GetProduct(hidHWDev.HIDHandel),
                    SerialNumber = GetSerialNumber(hidHWDev.HIDHandel),
                    HIDFullPath  = devPath,
                };
                hidInfoStruct.HIDCompareStr = devPath.Split('&')[2];
                HiddAttributtes hidAttr = new HiddAttributtes();
                try
                {
                    hidAttr = GetVidPid(hidHWDev.HIDHandel);
                }
                catch (Exception ex)
                {
                    Utilities.Logger(HIDAPIs.LogHIDHWDev, $"GetVidPid Error {ex.Message}");
                }
                hidInfoStruct.Vid = hidAttr.VendorID;
                hidInfoStruct.Pid = hidAttr.ProductID;

                hidInfoStruct.OutputBuffSize = hidHWDev.OutputBuffSize;
                hidInfoStruct.InputBuffSize  = hidHWDev.InputBuffSize;
                isWork = true;
            }
        }
 public static extern Boolean HidD_GetAttributes(IntPtr hFile,
                                                 ref HiddAttributtes attributes);