我有另一个程序员的一些代码,该代码在我认为是页面文件的地方使用/创建共享内存。使用的代码是:
HANDLE hMapObject;
HWND hWnd;
float *MapView;
float MapScale[10];
BOOL MapError, MapViewError;
DWORD LastMapError; // shared memory file init
hMapObject = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "GInterface");
if (!hMapObject)
{
hMapObject = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof (MapScale), "GInterface");
if (!hMapObject)
{
MapError = true;
LastMapError = GetLastError();
}
}
MapView = (float*)MapViewOfFile(hMapObject, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if (!MapView)
{
MapViewError = true;
LastMapError = GetLastError();
}
我已经看过C#的共享内存,但它似乎与我在这里没有任何关系。我的C#程序仅需要从共享内存中读取,如果有帮助,则无需对其进行写入。
提前致谢!
最佳答案
您应该能够使用以下命令在C#中打开内存映射文件
var mappedFile = System.IO.MemoryMappedFiles.MemoryMappedFile.OpenExisting(MemoryMappedFileRights.Read, "GInterface");
using (Stream view = mappedFile.CreateViewStream())
{
//read the stream here.
}