我通过调用Marshal.PtrToStructure(intPtr,typeof(Servent))得到一个AccessViolationExcpetion。任何想法我做错了什么?我在x64上试过这个。IntPtrintPtr=NativeMethods.GetServByName(name,"tcp");if(intPtr!=IntPtr.Zero){Serventservent=(Servent)Marshal.PtrToStructure(intPtr,typeof(Servent));result=System.Convert.ToInt32(IPAddress.Networ
我有这个C++代码:extern"C"__declspec(dllexport)VOIDAllocateFoo(MY_DATA_STRUCTURE**foo){*foo=newMY_DATA_STRUCTURE;//dostufftofoo}然后在C#中我这样调用函数:[DllImport("MyDll.dll")]staticexternvoidAllocateFoo(outIntPtrpMyDataStruct);...MyDataStructureGetMyDataStructure(){IntPtrpData;ManagedAllocateFooDelegate(outpDat
我有一个系统,其中远程代理发送序列化结构(来自嵌入式C系统)供我通过IP/UDP读取和存储。在某些情况下,我需要发回相同的结构类型。我认为我使用Marshal.PtrToStructure(接收)和Marshal.StructureToPtr(发送)进行了很好的设置。但是,一个小问题是网络大端整数需要转换为我的x86小端格式才能在本地使用。当我再次将它们送走时,bigendian是必经之路。这里是有问题的函数:privatestaticTBytesToStruct(refbyte[]rawData)whereT:struct{Tresult=default(T);GCHandlehan