public bool GetFeature(byte reportId, byte[] data, int offset, int count) { lock (lockObject) { if (reference == null) { throw new InvalidOperationException("The HID reference is null."); } else if (reference.IsInvalid) { throw new InvalidOperationException("The HID reference is invalid"); } featureBuffer[0] = reportId; GCHandle gch = GCHandle.Alloc(featureBuffer, GCHandleType.Pinned); bool ret = Hid.HidD_GetFeature(reference, gch.AddrOfPinnedObject(), (uint)(count + 1)); gch.Free(); if (ret) { Buffer.BlockCopy(featureBuffer, 1, data, offset, count); } return(ret); } }
public bool GetFeature <T>(byte reportId, T data) where T : struct { lock (lockObject) { if (reference == null) { throw new InvalidOperationException("The HID reference is null."); } else if (reference.IsInvalid) { throw new InvalidOperationException("The HID reference is invalid"); } featureBuffer[0] = reportId; GCHandle gch = GCHandle.Alloc(featureBuffer, GCHandleType.Pinned); bool ret = Hid.HidD_GetFeature(reference, gch.AddrOfPinnedObject(), (uint)Marshal.SizeOf <T>()); if (ret) { data = Marshal.PtrToStructure <T>(gch.AddrOfPinnedObject()); } gch.Free(); return(ret); } }
public bool GetFeature(byte[] rawBuffer, int count) { lock (lockObject) { if (reference == null) { throw new InvalidOperationException("The HID reference is null."); } else if (reference.IsInvalid) { throw new InvalidOperationException("The HID reference is invalid"); } GCHandle gch = GCHandle.Alloc(rawBuffer, GCHandleType.Pinned); bool ret = Hid.HidD_GetFeature(reference, gch.AddrOfPinnedObject(), (uint)count); gch.Free(); return(ret); } }
public bool GetFeature(int reportNumber, out byte[] result) { result = new byte[64]; result[0] = Convert.ToByte(reportNumber); return(Hid.HidD_GetFeature(this._handle, ref result[0], result.Length)); }