/// <summary>
        /// The get device descriptor.
        /// </summary>
        /// <param name="handle">
        /// The handle.
        /// </param>
        /// <param name="path">
        /// The path.
        /// </param>
        /// <returns>
        /// The <see cref="UsbDeviceDescriptor"/>.
        /// </returns>
        internal static UsbDeviceDescriptor GetDeviceDescriptor(IntPtr handle, string path)
        {
            var deviceDesc = new UsbDeviceDescriptor
            {
                DevicePath = path
            };

            uint transfered;

            WinUsb_GetDescriptor(handle, 0x01, 0, 0, out deviceDesc, (uint)Marshal.SizeOf(deviceDesc), out transfered);
            return(deviceDesc);
        }
 internal static extern bool WinUsb_GetDescriptor(IntPtr interfaceHandle, byte descriptorType, byte index, ushort languageId, out UsbDeviceDescriptor deviceDesc, uint bufferLength, out uint lengthTransfered);