.NET 4.x Попытка чтения или записи в защищенную память - C#
Формулировка задачи:
Доброго времени суток!
Возникла такая проблема - при вызове функции из dll(написана на С++) в проекте C# компилятор спотыкается на функции Camac_XQ, выпадая с ошибкой "Попытка чтения или записи в защищенную память..."
Кто-ниюудь может подсказать каким образом ее можно исправить? Или вернее где я косячу, что она вылезает?
[DllImport("USB_CAM_DLL.dll")]
unsafe static extern char* CamInit();
[DllImport("USB_CAM_DLL.dll")]
static extern void CamClose();
[DllImport("USB_CAM_DLL.dll")]
unsafe static extern int Camac_XQ(Int64 N, int A, int F, int* D, char* XQ);
[DllImport("USB_CAM_DLL.dll")]
unsafe static extern int Camac_R(int N, int A, int F, int* D);
[DllImport("USB_CAM_DLL.dll")]
static extern int Camac_W(int N, int A, int F, int D);
[DllImport("USB_CAM_DLL.dll")]
static extern int Camac_(int N, int A, int F);
[DllImport("USB_CAM_DLL.dll")]
static extern void CamZ();
[DllImport("USB_CAM_DLL.dll")]
static extern void CamRemI();
[DllImport("USB_CAM_DLL.dll")]
static extern void CamC();
[DllImport("USB_CAM_DLL.dll")]
static extern void SequStop();
[DllImport("USB_CAM_DLL.dll")]
unsafe static extern int SequLoad(char* Buf, int Length);
[DllImport("USB_CAM_DLL.dll")]
unsafe static extern int SequWaitAndRead(char* Buf, int Length);
[DllImport("USB_CAM_DLL.dll")]
static extern int SetLamTimeOut(int Time);
[DllImport("USB_CAM_DLL.dll")]
unsafe static extern int GetLamTimeOut(int* Time);
//собственные функции для работы с CАMAC
unsafe public int init_CAMAC(int station)
{
char* result;
char XQ;
int D;
string nodev = "No USB Device found";
result = CamInit();
if (nodev.CompareTo(Marshal.PtrToStringAnsi((IntPtr)result))!= 0)
{
CamZ();
CamC();
Camac_XQ(station, 0, 2, &D, &XQ);
XQ = Convert.ToChar(Convert.ToInt32(XQ) & 3);
D = 0;
return XQ;
}
else
{
MessageBox.Show(Marshal.PtrToStringAnsi((IntPtr)result), "InitCAMAC");
return -1;
}
}
}Решение задачи: «.NET 4.x Попытка чтения или записи в защищенную память»
textual
Листинг программы
[DllImport("USB_CAM_DLL.dll", CallingConvention=CallingConvention.Cdecl)]
unsafe static extern int Camac_XQ(int N, int A, int F, int* D, byte* XQ);