日期:2014-05-18  浏览次数:20947 次

p/invoke的异常:尝试读取或写入受保护的内存。这通常指示其他内存已损坏
调用win32 api需要将指针对象
USE_INFO_2 use2 = new USE_INFO_2();//结构体
IntPtr pBuf = IntPtr.Zero;
Marshal.StructureToPtr(use2, pBuf, true)将结构体转成非托管的指针对象时报下面错误:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。请各位高手指导。

------解决方案--------------------
Marshal.StructureToPtr里面的IntPtr要已经分配足够的内存,直接传IntPtr.Zero不行。

http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.marshal.structuretoptr.aspx