Передача указателя на структуру, которая содержит массив в качестве параметра в C #

У меня есть функция на C ++, которая экспортируется в DLL. функция

LONG LOGIN(LPDEVINFO info);

структура LPDEVINFO :

struct{  
       BYTE sSerialNumber[20];
} *LPDEVINFO;

для передачи параметра LPDEVINFO , я определил класс в управляемом коде:

class DEVINFO{
     Byte[] sSerialNumber = new Byte[20];
}

, а затем P / Invoke как это:

[DllImport ('MyDll.dll')]
public static extern Int32 LOGIN(DEVINFO info);

, а затем вызовите его на C #:

DEVINFO info = new DEVINFO();
Int id = LOGIN(info)

Когда я запустил этот код, я получил следующую ошибку:

An unhandled exception of type 'System.AccessViolationException' occurred in WindowsFormsApplication1.exe

Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Я думаю, что проблема вызвана массивом sSerialNumber . Но я не знаю, как это правильно определить.

Заранее спасибо!

0
задан David Heffernan 23 December 2011 в 17:55
поделиться