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),会接收执行文件的视图。 |
指定返回的句柄是否在进程创建机器被新的进程继承。如果为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返回的句柄。
相关文章推荐
- c++中共享内存操作函数CreateFileMapping解析(一)
- c++中共享内存操作函数MapViewOfFile解析(二)
- 建立共享内存和操作共享内存几个函数的用法
- c/c++ 内存操作函数 宏_条件编译
- linux 文件操作函数 通过例子来解释 父子间文件描述符共享 内存映像图
- c++中常用的内存操作函数
- C++ 共享内存 函数封装
- c#读写共享内存操作函数封装
- C/C++中的内存操作函数
- 共享内存和操作共享内存几个函数的用法
- 共享内存操作函数使用及错误调试
- 内存操作函数memcpy等的用法解析
- c++共享内存操作实例
- C++程序 证明类的数据成员的内存分配是独立的 ,成员函数是共享的
- linux 文件操作函数 通过例子来解释 父子间文件描述符共享 内存映像图
- shm*()--共享内存操作函数
- c/c++字符串操作函数源码解析
- C/C++ 内存操作函数集合(Buffer Manipulation)
- C/C++学习之C提高----函数调用模型、指针做函数参数、字符串的基本操作、一级指针内存模型建立
- c++ void,内存操作函数