Ejemplo n.º 1
0
        public unsafe static string GetString(StringDescriptor *descriptor)
        {
            if (descriptor->bDescriptorType != DescriptorType.StringDescriptor && descriptor->bLength != 0)
            {
                throw new IOException($"Invalid descriptor type '{descriptor->bDescriptorType}'. Expected '{DescriptorType.StringDescriptor}'");
            }

            if (descriptor->bLength == 0)
            {
                return("");
            }

            var unicodeLength = (descriptor->bLength - 1) / 2;
            var deviceString  = new Span <char>(&descriptor->bString, unicodeLength).ToString();

            return(deviceString);
        }
Ejemplo n.º 2
0
 public unsafe static byte[] GetRaw(StringDescriptor *descriptor)
 {
     return(new ReadOnlySpan <byte>(descriptor, descriptor->bLength).ToArray());
 }