OpenFileMappingA 函数 (winbase.h)

打开命名文件映射对象。

语法

HANDLE OpenFileMappingA(
  [in] DWORD  dwDesiredAccess,
  [in] BOOL   bInheritHandle,
  [in] LPCSTR lpName
);

参数

[in] dwDesiredAccess

对文件映射对象的访问。 针对目标文件映射对象上的任何安全描述符检查此访问。 有关值列表,请参阅 文件映射安全性和访问权限

[in] bInheritHandle

如果此参数为 TRUE,则 CreateProcess 函数创建的进程可以继承句柄;否则,无法继承句柄。

[in] lpName

要打开的文件映射对象的名称。 如果文件映射对象具有按此名称打开的句柄,并且映射对象上的安全描述符与 dwDesiredAccess 参数不冲突,则打开操作会成功。 名称可以具有“Global\”或“Local\”前缀,以显式打开全局命名空间或会话命名空间中的对象。 名称的其余部分可以包含除反斜杠字符 (\) 以外的任何字符。 有关详细信息,请参阅 内核对象命名空间。 使用终端服务会话实现快速用户切换。 第一个登录用户使用会话 0,下一个登录用户使用会话 1,依此。 内核对象名称必须遵循终端服务概述的准则,以便应用程序可以支持多个用户。

返回值

如果函数成功,则返回值是指定文件映射对象的打开句柄。

如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。

注解

OpenFileMapping 返回的句柄可以与需要文件映射对象的句柄的任何函数一起使用。

通过映射视图修改文件时,上次修改时间戳可能不会自动更新。 如果需要,调用方应使用 SetFileTime 设置时间戳。

当不再需要时,调用方应调用 OpenFileMapping 返回的句柄释放,并调用 CloseHandle

在 Windows Server 2012 中,以下技术支持此函数。

技术 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)
 

示例

有关示例,请参阅 创建命名共享内存

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h、Memoryapi.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CreateFileMapping

文件映射函数

内存管理函数

共享文件和内存