Пример #1
0
        public unsafe string GetDeviceString(byte index)
        {
            return(WithHandle(winUsbHandle =>
            {
                var packet = SetupPacket.MakeGetStringDescriptor(index);
                var buffer = ArrayPool <byte> .Shared.Rent(StringDescriptor.MaxSize);

                fixed(void *bufferPtr = &buffer[0])
                {
                    if (!WinUsb_ControlTransfer(winUsbHandle, packet, bufferPtr, StringDescriptor.MaxSize, out var descriptorLength, null))
                    {
                        ArrayPool <byte> .Shared.Return(buffer);
                        return null;
                    }

                    ArrayPool <byte> .Shared.Return(buffer);
                    return StringDescriptor.GetString((StringDescriptor *)bufferPtr);
                }
            }));
        }
Пример #2
0
 static void PrintStringDescriptor(StringDescriptor descriptor)
 {
     Console.WriteLine($"Type:                                                {descriptor.Type}");
     Console.WriteLine($"Value:                                               {descriptor.Value}");
 }