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

原创 2012年03月21日 22:30:39

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返回的句柄。

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

为指定的文件创建或者打开一个命名的或者非命名的文件映射对象。 HANDLE CreateFileMapping(  HANDLE hFile,                       // h...

shm*()--共享内存操作函数

#include #include int shmget(key_t key, size_t size, int shmflg); key_t key --------------------...

c/c++函数内外代码段共享内存块的解决方案

转自:http://wuzongbin2008.blog.163.com/blog/static/214687332008101943339948/ 在我们用C/C++开发的过程中,总是有一个问题会...
  • gukesdo
  • gukesdo
  • 2011年10月19日 22:39
  • 1579

c#调用c++dll共享内存需要函数

调用函数如下,都是项目中用到的函数,这样用到的时候不需要再照着msdn中c++函数一个一个的修改成c#支持的函数了。 //创建文件映射 [DllImport("kernel32.dll", E...

PHP IPC函数,shm,shmop,message——共享内存函数,消息队列,与c/c++通讯

--enable-sysvsem.  信号量,个人感觉最好是无锁无信号设计速度更快 --enable-sysvshm.  shm*函数,将php变量放入共享内存,单一id可以插入多个php变量,自动序...

VC++ 共享内存读写操作

  • 2014年01月02日 13:58
  • 4.39MB
  • 下载

互斥量 共享内存 对线程中文件操作

互斥量的概念: 互斥量是另一种用于多线程中的同步访问方法,它允许程序锁住某个对象,使得每次只能有一个线程访问它。为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁...

windows共享内存操作

  • 2011年09月20日 14:37
  • 3.65MB
  • 下载

C++共享内存示例

  • 2017年07月30日 14:49
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++中共享内存操作函数解析(三)
举报原因:
原因补充:

(最多只允许输入30个字)