c# - 如何在 C# 应用程序中访问这种类型的 C++ 共享内存?

标签 c# c++ shared-memory

我有来自另一位程序员的一些代码,它们在我认为是页面文件中使用/创建共享内存。使用的代码是:

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.
}

关于c# - 如何在 C# 应用程序中访问这种类型的 C++ 共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926255/

相关文章:

c++ - C 程序执行

c++ - DLL 中的实例化类在 QT 中的 LoadLibrary 中抛出 127 错误

c - mmap 物理连续内存

c - 在 C 项目中共享 "Char * "

c# - IIdentity、IPrincipal 或 IUser : what's the difference?

c# - 将 @Html.Raw 转换为 ASP.NET MVC 4 Razor 中的字符串

c# - 数组中的所有元素是否满足由另一个字符串数组确定的特定条件

C# 如何将 CallNtPowerInformation 与 Interop 结合使用以获取 SYSTEM_POWER_INFORMATION

c++ - Arduino 在循环中显示 LED 输出的奇怪行为

android - class MemoryFile 有什么用?