说明 创建一个新的文件映射对象。
HANDLE CreateFileMapping(
HANDLE hFile, // 映射文件的句柄
LPSECURITY_ATTRIBUTES lpFileMappingAttributes,// 安全描述符指针
DWORD flProtect, // 对映射对象的保护
DWORD dwMaximumSizeHigh, // 对象最大长度的高32位
DWORD dwMaximumSizeLow, // 对象最大长度的低32位
LPCTSTR lpName // 文件内存映射对象的名字
);
参数:
hFile:映射文件的句柄,文件的打开模式必须与flProtect参数指定的相一致;如果这个参数值为0xFFFFFFFF,那么必须在dwMaximumSizeHigh和dwMaximumSizeLow参数中指定映射对象的大小。并且将在操作系统虚拟内存页面替换文件中创建文件映射对象,而不是使用磁盘文件,同时必须给出这个映射对象的大小。文件映射对象通过副本,遗传或名字来共享。
lpFileMappingAttributes:安全描述符指针,决定返回句柄是否能被子进程继承,如果是NULL,那么子进程不能继承。WinNt中,如果是NULL,那么文件映射对象得到一个默认的安全描述符。
flProtect:为得到的文件试图指定保护模式,可以被设置为下列值:
PAGE_READONLY :只读属性,并且hFile对应的文件必须以GENERIC_READ形式打开。
PAGE_READWRITE:可读可写属性,并且hFile对应的文件必须以GENERIC_READ 和 GENERIC_WRITE形式打开。
PAGE_WRITECOPY:对可写区域复制后操作,并且hFile对应的文件必须以GENERIC_READ 和 GENERIC_WRITE形式打开。
dwMaximumSizeHigh,dwMaximumSizeLow:如果这两个参数为0,则文件映射对象的最大长度等于hFile指定的文件长度。
lpName: 文件映射对象的名字,如果这个名字已存在,则按照flProtect指定的来处理映射对象。如果此参数为空,则创建一个无名字的文件映射对象。如果此参数 的名字与系统事件的名字相同,则函数执行失败,GetLastError返回 ERROR_INVALID_HANDLE;
返回值:函数调用成功返回文件映射对象的句柄,如果文件映射对象已经存在则返回原有映射对象的句柄,GetLastError返回ERROR_ALREADY_EXISTS。函数执行失败返回Null。
分享到:
相关推荐
内存映射文件,createfilemapping
CreateFileMapping的多种使用方式,对C语言学习很有帮助,希望能对你有用。在百度文库我也有上传。
CreateFileMapping内存映射文件
APIHOOK通过CreateFileMapping实现进程间密钥的传递 注exe不可关闭,关闭了内在中的密钥就不存在了
具体来说,Linux 上的mmap和 Windows 上的CreateFileMapping 。 例子: MemoryMapped::File fh("thing"); // loop over mapped data ... for(size_t i=0; i<fh.size(); i++) { do_something_with(fh[i]); } ...
VB 多线程 控制台类 及源代码 实例 【荐】 使用VB编写多线程的控制台类及源代码实例,写的不错,推荐给VB的朋友们参考。本多线程运行很稳定,IDE中运行很多次无一次引起不崩溃,数组(0)为 初始化,创建线程 1 - N ...
windows下的 FileMapping 共享内存用法 封装成类 编译通过 测试通过 附件是sln工程
本代码 完美封装 好用易懂. 已在自己的项目中使用很久 稳定无bug, 内存映射的好处就不说了 但如果直接使用API 过程很繁复.
HMap := CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, 4 * 1024, 'MemorySharedFile'); if HMap=0 then TS('试图建立成功'); end; {我觉得单个功能的文件映射更能够让使用者快速的掌握...
判断应用程序运行唯一性,应用CreateFileMapping和CreateMutex
hMapping=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x100,"MYSHARE"); if(hMapping==NULL) { AfxMessageBox("CreateFileMapping() failed."); return; } //将文件的视图...
//创建文件映射对象 CreateFileMapping MapViewOfFile 内存共享,进程间通讯
public static extern IntPtr CreateFileMapping(int hFile, IntPtr lpAttributes, uint flProtect, uint dwMaxSizeHi, uint dwMaxSizeLow, string lpName); [DllImport("Kernel32.dll", CharSet = CharSet.Auto)...
CreateFileMapping内存映射文件,共享内存服务端和客户端程序,小例子。适合初学者。
易语言ShareBin源码,ShareBin,OpenFileMapping,CreateFileMapping,MapViewOfFile,UnmapViewOfFile,CloseHandle,MoveMemory1,MoveMemory2
Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理...
易语言快速创建文件源码,快速创建文件,创建空白文件,CreateFile,printf,CreateFileMapping,CloseHandle,SetFilePointer,SetEndOfFile
易语言加速文件映射源码,加速文件映射,写到文件_,文件号转句柄,CreateFileMapping,CloseHandle,MapViewOfFile,UnmapViewOfFile
易语言ShareText源码,ShareText,OpenFileMapping,CreateFileMapping,MapViewOfFile,UnmapViewOfFile,CloseHandle,MoveMemory1,MoveMemory2,SetDlgItemText,GetDlgItemText,GetID
采用文件映射(CreateFileMapping与MapViewOfFile)可快速实现大文件(>4G)的逆序输出,并且能快速根据行号索引行号内容!