(кодирую на C #)
Я хочу передать указатель на структуру через API.
Скажем структура
[StructLayout(LayoutKind.Sequential,CharSet= CharSet.Ansi)]
public struct PassThisStruct
{
public Int32 Param1;
public Int32 Param2;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=13)]
public Char[] OutputData;
};
Теперь декларация API: -
unsafe public delegate Int32 MyAPI(Int16 Something, PassThisStruct* StructPtr);
т.е. Я хочу передать указатель структуры на структуру.
Я создал делегат для этого API, а затем извлек адрес из DLL и сохранил его в указателе функций.
Но когда я пытаюсь скомпилировать, он выдает ошибку при объявлении делегата , что «невозможно получить адрес, получить размер или объявить указатель на управляемое пространство».
Так как передать указатель?
Я знаю, что могу использовать «ref», но этот API написан на C ++ и ему нужен структурный указатель. Если я использую ref, я не могу передать Null, и я также получаю сообщение об ошибке «AccessViolationException» (это еще одна большая проблема для меня!). Поэтому я бы использовал ref, только если смогу избавиться от AccessViolationException.
Еще один вопрос, могу ли я передать Null в этом случае ?? Если да, то как?
Привет!