`
bingtears
  • 浏览: 184886 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

创建文件映射函数CreateFileMapping中第一个参数设置成0xFFFFFFFF

    博客分类:
  • C++C
阅读更多
创建文件内存映射:
HANDLE hMySharedMapFile=CreateFileMapping((HANDLE)0xFFFFFFFF),
NULL,PAGE_READWRITE,0,0x1000,"MySharedMem");
其中第一个参数文件句柄设置成0XFFFFFFFF代表什么意思呢?
0XFFFFFFFF在内存中又是什么意思呢?
为什么要把文件句柄设置成0XFFFFFFFF???
网友回复:句柄设置成0XFFFFFFFF表示在内存中开辟一块区域。
网友回复:就是在内存中建立,而不是使用盘上的某个文件啊
网友回复:内存映射API函数CreateFileMapping创建一个有名的共享内存:
HANDLE CreateFileMapping(
HANDLE hFile, // 映射文件的句柄,
//设为0xFFFFFFFF以创建一个进程间共享的对象
LPSECURITY_ATTRIBUTES lpFileMappingAttributes, // 安全属性
DWORD flProtect, // 保护方式
DWORD dwMaximumSizeHigh, //对象的大小
DWORD dwMaximumSizeLow,
LPCTSTR lpName // 必须为映射文件命名
);


网友回复: 要把文件映像到内存,首先必须调用CreateFileMapping()函数,它需要用一个由CreateFile()函数打开并返回的文件句柄,对大多数共享内存应用程序,必须把此句柄设置为0xFFFFFFFF,用来指定系统页面文件。通过使用上面的特殊句柄,可以不调用CreateFile函数,当然在完成时,也不必有一个内存的磁盘文件拷贝。

网友回复:0XFFFFFFFF是INVALID_HANDLE_VALUE,表示不指定文件,在系统分页文件(pagefile.sys)中分配映射的磁盘空间。
网友回复:If hFile is (HANDLE)0xFFFFFFFF, the calling process must also specify a mapping object size in the dwMaximumSizeHigh and dwMaximumSizeLow parameters. The function creates a file-mapping object of the specified size backed by the operating-system paging file rather than by a named file in the file system. The file-mapping object can be shared through duplication, through inheritance, or by name.


网友回复:MSDN:
If hFile is INVALID_HANDLE_VALUE, the calling process must also specify a size for the file mapping object in the dwMaximumSizeHigh and dwMaximumSizeLow parameters. In this scenario, CreateFileMapping creates a file mapping object of a specified size that is backed by the system paging file instead of by a file in the file system.

INVALID_HANDLE_VALUE就是-1即0xffffffff
网友回复:实际上是用于进程间通信的,以共享内存的方式。
网友回复:-1

hFile
Handle to the file from which to create a mapping object. The file must be opened with an access mode compatible with the protection flags specified by the flProtect parameter. It is recommended, though not required, that files you intend to map be opened for exclusive access.
If hFile is (HANDLE)0xFFFFFFFF, the calling process must also specify a mapping object size in the dwMaximumSizeHigh and dwMaximumSizeLow parameters. The function creates a file-mapping object of the specified size backed by the operating-system paging file rather than by a named file in the file system. The file-mapping object can be shared through duplication, through inheritance, or by name.

本篇文章来源于 IT者 | www.itzhe.cn 原文链接:http://itzhe.cn/news/20080923/231975.html
分享到:
评论

相关推荐

    API之网络函数---整理网络函数及功能

    CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件 DeviceIoControl 对设备执行指定的操作 DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 FileTimeToDosDateTime 将...

    VC 创建内存映像文件对象并使用.rar

    VC 6.0 创建内存映像文件对象并使用,实现了写入内存映射文件和从内存映射文件中读取数据,比如将数据从内存映射文件读出,实现方法如下:  void CFileMapTransTxtDlg::OnRead()  {   //创建内存映像对象   ...

    内存映射文件与虚拟内存有些类

    Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理...

    内存映射的封装 包含读、写文件

    本代码 完美封装 好用易懂. 已在自己的项目中使用很久 稳定无bug, 内存映射的好处就不说了 但如果直接使用API 过程很繁复.

    文件映射实现文件逆序

    采用文件映射(CreateFileMapping与MapViewOfFile)可快速实现大文件(>4G)的逆序输出,并且能快速根据行号索引行号内容!

    易语言加速文件映射

    易语言加速文件映射源码,加速文件映射,写到文件_,文件号转句柄,CreateFileMapping,CloseHandle,MapViewOfFile,UnmapViewOfFile

    createfilemapping_src.zip_CreateFileMapping

    内存映射文件,createfilemapping

    文件映射示例-FISH制作

    {我觉得单个功能的文件映射更能够让使用者快速的掌握,希望看了我的例子对你有帮助!} //================================================= 代码里面有一处提示错误,特此更正一下 if HMap = 0 then begin ...

    CreateFileMapping

    CreateFileMapping内存映射文件

    易语言快速创建文件

    易语言快速创建文件源码,快速创建文件,创建空白文件,CreateFile,printf,CreateFileMapping,CloseHandle,SetFilePointer,SetEndOfFile

    VB VB.NET 用 API 做内存映射文件也很简单

    最近用.NET 写Windows 服务程序,要用到内存文件映射,顺便把练习整理了一下,发上来来分享。望高手指教,新手也少走弯路。 代码非常少,不用注释应该都能看懂。 本实例用VB.net写的映射文件创建程序,用 VB6 写的...

    内存共享,进程间通讯

    //创建文件映射对象 CreateFileMapping MapViewOfFile 内存共享,进程间通讯

    windows用户称拦截api

    开辟这4GB的虚拟地址空间之后,系统会把磁盘上的执行文件映射到进程的地址空间中去(一般是在地址0x00400000,可以通过修改编译选项来修改这个地址)而一个进程运行所需要的动态库文件则一般从0x10000000开始加载。...

    C语言实现大数据文件的内存映射机制

    Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理...

    映射文件的使用源码实例

    TRACE("创建文件映射对象失败,错误代码:%drn", GetLastError()); return; } // 得到系统分配粒度 SYSTEM_INFO SysInfo; GetSystemInfo(&SysInfo); DWORD dwGran = SysInfo.dwAllocationGranularity;

    内存映射存储文件详细算法

    本文档给出了内存映射存储文件详细算法,代码片段: DWORD dwFileSize = GetFileSize(hFile,NULL); HANDLE hFileMap = CreateFileMapping(hFile,NULL,PAGE_READWRITE,0, dwFileSize+sizeof(char),NULL); if...

    用内存映射在多个应用程序之间共享数据

    用内存映射在多个应用程序之间共享数据,...(1)用CreateFileMapping()创建一个文件映射内核对象; (2)用MapViewOfFile()将文件数据映射到进程的地址空间; (3)用UnmapViewOfFile()从进程地址空间解除这个映射。

    CreateFileMapping的使用

    CreateFileMapping的多种使用方式,对C语言学习很有帮助,希望能对你有用。在百度文库我也有上传。

    通过APIHOOK钩子CreateFileMapping实现进程间密钥的传递.zip

    APIHOOK通过CreateFileMapping实现进程间密钥的传递 注exe不可关闭,关闭了内在中的密钥就不存在了

    函数sync、fsync与fdatasync的总结整理(必看篇)

    一、术语解释 ...Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内

Global site tag (gtag.js) - Google Analytics