Мне нужно вызвать функцию переменного тока, импортированную из DLL.Я могу найти, как импортировать функцию API, но я не уверен, как упорядочить все типы, которые функция ожидает в качестве параметров.В частности, типы указателей.
Пример подписи функции может быть ...
Result_Type get_signal_value (SIG * sig, char * name, int * value);
, где SIG - этоструктура, содержащая различные предметы.например.struct SIG {char sig_id [16];int sig_ptr;HW_ADDR_TYPE hw_info;};
и
struct HW_ADDRESS_TYPE {short channel_no;шасси без знака;слот без знака;беззнаковая ссылка;заполнитель без знака;};
Я могу найти, что маршалу этого типа мне нужно описать структуру структуры ...
[StructLayout (LayoutKind.Sequential)] public class HW_ADDRESS_TYPE {short channel_no;байтовое шасси;байтовый слот;байтовая ссылка;байт-заполнитель;};
[StructLayout (LayoutKind.Sequential)] открытый класс SIG {public const int LEN_SID = 16;[MarshalAs (UnmanagedType.ByValTStr, SizeConst = LEN_SID)] публичная строка sig_id;int sig_ptr;HW_ADDRESS_TYPE hw_info;};
но, похоже, здесь есть проблемы.правильно ли я это сделал?
То же самое для int * в примере.
Любая помощь будет отличной.Ура!