Я пытаюсь подключить USB-драйвер только для Windows к Linux, переключившись с hid.dll и других материалов только на окна на кросс-платформу hidapi.Использование C структуры в C#
hidapi.h содержит следующие определения:
struct hid_device_info {
char *path;
unsigned short vendor_id;
unsigned short product_id;
wchar_t *serial_number;
unsigned short release_number;
wchar_t *manufacturer_string;
wchar_t *product_string;
unsigned short usage_page;
unsigned short usage;
int interface_number;
struct hid_device_info *next;
};
и
struct hid_device_info HID_API_EXPORT * HID_API_CALL hid_enumerate(unsigned short vendor_id, unsigned short product_id);
Пожалуйста, смотрите ссылку выше для кода с комментариями.
Драйвер написан на C#, поэтому я хотел бы подключиться к библиотеке hidapi и использовать их напрямую. Мне удалось получить доступ к hid_enumerate, делая это:
[DllImport ("/usr/local/lib/libhidapi-hidraw.so.0")]
internal static extern IntPtr hid_enumerate (ushort vendor_id, ushort product_id);
Вызов hid_enumerate позднее дает мне указатель. Однако я не уверен, как исходить отсюда. Я хотел бы превратить это в LinkedList объектов hid_device_info или какую-либо другую структуру в C#.
Я новичок в C#, но у меня много опыта программирования. Не могли бы вы указать мне в правильном направлении?
Это указатель к вам: http://stackoverflow.com/questions/16065110/porting-c-struct-to-c-sharp –