我在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

08-25 09:08