我在X64上运行
这是我的代码:
ColorFileMapping = CreateFileMapping(new IntPtr(-1), IntPtr.Zero, 0x04, 0, _byteCount, null);
ViewerImageData = MapViewOfFile(ColorFileMapping, 0xF001F, 0, 0, _byteCount);
但是,当我尝试处置此IntPtr时,我得到了BadImageFormatException
你能解释为什么吗?
public void Dispose()
{
Marshal.FreeHGlobal(ViewerImageData); //here i get the exception
Marshal.FreeHGlobal(ColorFileMapping);
}
最佳答案
调用MapViewOfFile
实际上是对Windows API函数MapViewOfFile的调用,因此您不应将其视为HGLOBAL。它指向内存区域,完成后,您需要调用UnmapViewOfFile。
另外,应该通过调用CreateFileMapping关闭从CloseHandle返回的HANDLE
。