.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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы