146 lines
5.7 KiB
C#
146 lines
5.7 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Runtime.InteropServices;
|
|||
|
|
|
|||
|
|
namespace DTS.DASLib.Connection.USBFramework
|
|||
|
|
{
|
|||
|
|
public sealed class HIDDeclarations
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
// API Declarations for communicating with HID-class devices.
|
|||
|
|
|
|||
|
|
// ******************************************************************************
|
|||
|
|
// API constants
|
|||
|
|
// ******************************************************************************
|
|||
|
|
|
|||
|
|
// from hidpi.h
|
|||
|
|
// Typedef enum defines a set of integer constants for HidP_Report_Type
|
|||
|
|
public const short HidP_Input = 0;
|
|||
|
|
public const short HidP_Output = 1;
|
|||
|
|
public const short HidP_Feature = 2;
|
|||
|
|
|
|||
|
|
// ******************************************************************************
|
|||
|
|
// Structures and classes for API calls, listed alphabetically
|
|||
|
|
// ******************************************************************************
|
|||
|
|
|
|||
|
|
[StructLayout(LayoutKind.Sequential)]
|
|||
|
|
public struct HIDD_ATTRIBUTES
|
|||
|
|
{
|
|||
|
|
public int Size;
|
|||
|
|
public short VendorID;
|
|||
|
|
public short ProductID;
|
|||
|
|
public short VersionNumber;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[StructLayout(LayoutKind.Sequential)]
|
|||
|
|
public struct HIDP_CAPS
|
|||
|
|
{
|
|||
|
|
public short Usage;
|
|||
|
|
public short UsagePage;
|
|||
|
|
public short InputReportByteLength;
|
|||
|
|
public short OutputReportByteLength;
|
|||
|
|
public short FeatureReportByteLength;
|
|||
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 17)]
|
|||
|
|
public short[] Reserved;
|
|||
|
|
public short NumberLinkCollectionNodes;
|
|||
|
|
public short NumberInputButtonCaps;
|
|||
|
|
public short NumberInputValueCaps;
|
|||
|
|
public short NumberInputDataIndices;
|
|||
|
|
public short NumberOutputButtonCaps;
|
|||
|
|
public short NumberOutputValueCaps;
|
|||
|
|
public short NumberOutputDataIndices;
|
|||
|
|
public short NumberFeatureButtonCaps;
|
|||
|
|
public short NumberFeatureValueCaps;
|
|||
|
|
public short NumberFeatureDataIndices;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// If IsRange is false, UsageMin is the Usage and UsageMax is unused.
|
|||
|
|
// If IsStringRange is false, StringMin is the string index and StringMax is unused.
|
|||
|
|
// If IsDesignatorRange is false, DesignatorMin is the designator index and DesignatorMax is unused.
|
|||
|
|
|
|||
|
|
[StructLayout(LayoutKind.Sequential)]
|
|||
|
|
public struct HidP_Value_Caps
|
|||
|
|
{
|
|||
|
|
public short UsagePage;
|
|||
|
|
public byte ReportID;
|
|||
|
|
public int IsAlias;
|
|||
|
|
public short BitField;
|
|||
|
|
public short LinkCollection;
|
|||
|
|
public short LinkUsage;
|
|||
|
|
public short LinkUsagePage;
|
|||
|
|
public int IsRange;
|
|||
|
|
public int IsStringRange;
|
|||
|
|
public int IsDesignatorRange;
|
|||
|
|
public int IsAbsolute;
|
|||
|
|
public int HasNull;
|
|||
|
|
public byte Reserved;
|
|||
|
|
public short BitSize;
|
|||
|
|
public short ReportCount;
|
|||
|
|
public short Reserved2;
|
|||
|
|
public short Reserved3;
|
|||
|
|
public short Reserved4;
|
|||
|
|
public short Reserved5;
|
|||
|
|
public short Reserved6;
|
|||
|
|
public int LogicalMin;
|
|||
|
|
public int LogicalMax;
|
|||
|
|
public int PhysicalMin;
|
|||
|
|
public int PhysicalMax;
|
|||
|
|
public short UsageMin;
|
|||
|
|
public short UsageMax;
|
|||
|
|
public short StringMin;
|
|||
|
|
public short StringMax;
|
|||
|
|
public short DesignatorMin;
|
|||
|
|
public short DesignatorMax;
|
|||
|
|
public short DataIndexMin;
|
|||
|
|
public short DataIndexMax;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ******************************************************************************
|
|||
|
|
// API functions, listed alphabetically
|
|||
|
|
// ******************************************************************************
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern bool HidD_FlushQueue(int HidDeviceObject);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern bool HidD_FreePreparsedData(ref IntPtr PreparsedData);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern int HidD_GetAttributes(int HidDeviceObject, ref HIDD_ATTRIBUTES Attributes);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern bool HidD_GetFeature(int HidDeviceObject, ref byte lpReportBuffer, int ReportBufferLength);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern bool HidD_GetInputReport(int HidDeviceObject, ref byte lpReportBuffer, int ReportBufferLength);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern void HidD_GetHidGuid(ref System.Guid HidGuid);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern bool HidD_GetNumInputBuffers(int HidDeviceObject, ref int NumberBuffers);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern bool HidD_GetPreparsedData(int HidDeviceObject, ref IntPtr PreparsedData);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern bool HidD_SetFeature(int HidDeviceObject, ref byte lpReportBuffer, int ReportBufferLength);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern bool HidD_SetNumInputBuffers(int HidDeviceObject, int NumberBuffers);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern bool HidD_SetOutputReport(int HidDeviceObject, ref byte lpReportBuffer, int ReportBufferLength);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern int HidP_GetCaps(IntPtr PreparsedData, ref HIDP_CAPS Capabilities);
|
|||
|
|
|
|||
|
|
[DllImport("hid.dll")]
|
|||
|
|
static public extern int HidP_GetValueCaps(short ReportType, ref byte ValueCaps, ref short ValueCapsLength, IntPtr PreparsedData);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|