命名内存映射文件
Naming memory mapped files
根据文档,Local或Global之后的任何字符都可以,除了反斜杠。我决定根据物理文件的文件路径命名我的mmf,如下所示:
std::string GetMapName(std::string FilePath) {
std::string Ret("Local\");
char* pP = (char*)FilePath.c_str();
for (int i = 0; i < Path.size(); i++) {
if (pP[i] == '') pP[i] = '/';
}
Ret.append(FilePath);
return Ret;
}
所以如果文件在C:testvht1。然后它产生字符串"LocalC:/test/vht1.tst"
我在我的计算机上对此没有任何问题,但是这个软件最终将在共享托管环境中结束,并且我真的找不到关于命名MMF的惯例的太多信息。这是个好主意吗?
命名您的MMF映射(内存映射文件)有两个原因:
- 阅读器之间的接口&MMF 的编写者
- 帮助调试 的标识符
除非您有一个非常大的项目,否则不太可能有本地名称冲突。你可以给它起任何你喜欢的名字。
包含驱动器号和路径可能不是最好的选择。保持简洁:
std::string GetMapName(std::string filePath)
{
return "Local\" + Path::GetFileName(filePath);
}
根据docs[1],你不应该使用"Session"前缀。它保留给系统使用。"Global"前缀需要SeCreateGlobalPrivilege。
[1] https://msdn.microsoft.com/en-us/library/aa382954%28v=vs.85%29.aspx
相关文章:
- GCC链接器 - 将存档中的所有对象文件映射到特定部分
- 为什么我无法使用文本文件创建文件映射?
- 如何通过文件映射对象重新映射共享内存的视图?
- 共享数据文件映射
- 频繁访问文件映射内存
- 如何在Windows和更高版本上保留内存,并将文件映射到内存中
- 文件映射对象和文件对象可以互换使用吗
- 如何在C++中创建文件映射
- 使用文件映射从文件中读取数据
- 打开文件映射问题,找不到文件映射
- 将几个大文件映射到内存
- 文件映射和文件结构
- Windows CreateFileMapping:具有相同支持文件的不同文件映射对象
- 文件映射IPC挂起MapViewOfFile调用
- 使用C++中的文件映射对象进行读取
- 如何正确使用文件映射并将数据传递给子进程
- 文件映射打开(Windows)
- 循环文件映射会降低性能
- 内存映射文件-映射结构而不是文件
- 将一个文件映射到内存,然后获取到该内存的文件描述符