您的位置:首页 > 编程语言 > C语言/C++

c++中共享内存操作函数解析(三)

2012-03-21 22:30 344 查看

OpenFileMapping

打开一个命名的文件映射对象。

HANDLE OpenFileMapping(

DWORD dwDesiredAccess, // access mode

BOOL bInheritHandle, // inherit flag

LPCTSTR lpName // objectname

);

dwDesiredAccess:

指定文件对象的访问权限。

这个参数可以是下表中的一个值。


描述
FILE_MAP_WRITE

读和写的访问权限。hFileMappingObject参数创建时,有PAGE_READWRITE保护属性。

FILE_MAP_READ

写的访问权限。hFileMappingObject参数创建时,有PAGE_READWRITE或者PAGE_READONLY保护属性。

FILE_MAP_ALL_ACCESS

和FILE_MAP_WRITE一样

FILE_MAP_COPY

写复制访问权限。如果创建映射文件对象时,有PAGE_WRITECOPY和此参数(FILE_MAP_COPY),会接收执行文件的视图。

bInheritHandle:

指定返回的句柄是否在进程创建机器被新的进程继承。如果为TRUE,则说明新的进程可以继承这个句柄。

lpName:

命名的文件映射对象的名称。如果有一个此名称的打开的文件映射对象并且映射对象的安全描述符和dwDesiredAcess参数冲突,这次打开操作是成功的。

返回值

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

如果函数执行失败,函数返回NULL,可以通过调用GetLastError函数获得详细的信息。

说明

OpenFileMapping函数返回的句柄可以被用于任何需要文件映射对象句柄的函数。

UnmapViewOfFile

从调用线程地址空间释放文件数据映像。

BOOL UnmapViewOfFile(

LPCVOID lpBaseAddress // startingaddress

);

lpBaseAddress:

文件映像的开始地址,这个值必须设定为MapViewOfFile函数的返回值。

返回值

如果函数返回成功,返回值非空,所有在指定区域的被用的空间被释放。

如果返回失败,返回值为0.详细信息可以通过调用GetLastError函数获得。

说明

虽然应用可以关闭创建文件映射对象的文件句柄,但是系统保持相应的文件为打开状态直到最后的文件映像被释放。

CloseHandle

关闭一个打开的对象句柄。

BOOL CloseHandle(

HANDLE hObject // handle to object

);

hObject:

打开对象的句柄。

返回值

如果函数执行成功,返回为非零。

如果函数执行失败,返回值为0,可以通过GetLastError函数获得详细信息。

说明

CloseHandle函数可以关闭下面的对象:

· Access token –访问令牌

· Communications device ---通信设备

· Console input ---终端输入

· Console screen buffer ---终端屏幕缓冲去

· Event –事件

· File –文件

· File mapping—文件映射

· Job ---作业

· Mailslot –油槽

· Mutex –互斥

· Named pipe –命名管道

· Process –进程

· Semaphore –信号量

· Socket ---套接字

· Thread---线程

CloseHandle函数使指定的对象句柄无效,递减对象句柄计数,执行对象保留检查。在最后一个对象的句柄关闭后,这个句柄就会在系统中消失。

关闭一个线程句柄不会终止相应的线程。为了移除一个线程对象,必须终止这个线程,然后关闭线程对象。

用CloseHandle函数可以关闭由CreateFile函数返回的句柄。用FindClose函数关闭由FindFirstFile返回的句柄。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: