读书人

p/invoke的错误:尝试读取或写入受保护

发布时间: 2012-03-18 13:55:39 作者: rapoo

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

读书人网 >C#

热点推荐