[問題] 即時軟體RTX的Shared memory

看板C_Sharp (C#)作者 (....)時間13年前 (2011/10/13 12:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位版大好 我最近在使用real time軟體(RTX)撰寫運動控制程式 須用到共用記憶體的技術 程式碼如下: public struct ShareMem { public byte[] A; } [DllImport("rtapi_w32.dll", CharSet = CharSet.Auto)] static extern int RtCreateSharedMemory( int flProtect, int dwMaximumSizeHigh, int dwMaximumSizeLow, [MarshalAs(UnmanagedType.LPWStr)] string lpName, ref IntPtr location); ShareMem RTXDataPtr; public void InitShareMemory(){  RTXDataPtr.A = new byte[4];  pCMD0 = Marshal.AllocHGlobal(Marshal.SizeOf(RTXDataPtr));  hCMD0 = RtCreateSharedMemory(1, 0, Marshal.SizeOf(RTXDataPtr), "RTX_DATA", ref pCMD0);  RTXDataPtr = (ShareMem)Marshal.PtrToStructure(pCMD0, typeof(ShareMem)); } 現在的問題是當我使用程式碼如 RTXDataPtr.A[0] = 1; 時會產生"並未將物件參考設定為物件的執行個體"的錯誤訊息 請問我該如何修正程式碼? 感謝! PS:RtCreateSharedMemory為RTX軟體提供的函式,其原始呼叫碼如下: HANDLE RTAPI RtCreateSharedMemory( DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName, VOID ** location ); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.118.185 ※ 編輯: immj 來自: 122.117.118.185 (10/13 12:34)
文章代碼(AID): #1EbcdijO (C_Sharp)
文章代碼(AID): #1EbcdijO (C_Sharp)