IOHIDDeviceGetReport() private method

private IOHIDDeviceGetReport ( IntPtr device, IOHIDReportType type, IntPtr reportID, IntPtr report, IntPtr &reportLength ) : IOReturn
device System.IntPtr
type IOHIDReportType
reportID System.IntPtr
report System.IntPtr
reportLength System.IntPtr
return IOReturn
Ejemplo n.º 1
0
        public unsafe override void GetFeature(byte[] buffer, int offset, int count)
        {
            Throw.If.OutOfRange(buffer, offset, count);

            HandleAcquireIfOpenOrFail();
            try
            {
                fixed(byte *bufferBytes = buffer)
                {
                    int reportID = buffer[offset];
                    var hasReportID = ((MacHidDevice)Device).ReportsUseID; int reportOffset = hasReportID ? 0 : 1;
                    var reportPtr = (IntPtr)(bufferBytes + offset + reportOffset);

                    count -= reportOffset;
                    if (count <= 0)
                    {
                        throw new ArgumentException();
                    }

                    IntPtr reportLength = (IntPtr)count;

                    if (NativeMethods.IOReturn.Success != NativeMethods.IOHIDDeviceGetReport(_handle, NativeMethods.IOHIDReportType.Feature,
                                                                                             (IntPtr)reportID, reportPtr,
                                                                                             ref reportLength))

                    {
                        throw new IOException("GetFeature failed.");
                    }
                }
            }
            finally
            {
                HandleRelease();
            }
        }
Ejemplo n.º 2
0
        public unsafe override void GetFeature(byte[] buffer, int offset, int count)
        {
            Throw.If.OutOfRange(buffer, offset, count);

            HandleAcquireIfOpenOrFail();
            try
            {
                fixed(byte *bufferBytes = buffer)
                {
                    IntPtr reportLength = (IntPtr)count;

                    if (NativeMethods.IOReturn.Success != NativeMethods.IOHIDDeviceGetReport(_handle, NativeMethods.IOHIDReportType.Feature,
                                                                                             (IntPtr)buffer[offset],
                                                                                             (IntPtr)(bufferBytes + offset),
                                                                                             ref reportLength))

                    {
                        throw new IOException("GetFeature failed.");
                    }
                }
            }
            finally
            {
                HandleRelease();
            }
        }