租用问题

质量为本、客户为根、勇于拼搏、务实创新

< 返回租用问题列表

createfilemapping函数如何使用,createfilemappinga

发布时间:2023-08-07 07:55:31

createfilemapping函数如何使用

CreateFileMapping函数用于创建或打开一个文件映照对象。
函数原型以下:
HANDLE CreateFileMapping(
HANDLE hFile,
LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
DWORD flProtect,
DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow,
LPCTSTR lpName
);
参数解释以下:
- hFile:要映照到文件的句柄,可以是文件、装备还是文件/装备的虚拟文件。如果设置为INVALID_HANDLE_VALUE,则表示要创建一个内存映照。
- lpFileMappingAttributes:用于指定文件映照对象的安全属性,一般设置为NULL。
- flProtect:指定文件映照对象的访问保护属性,可以是以下值之一:
- PAGE_READONLY:只读
- PAGE_READWRITE:可读可写
- PAGE_WRITECOPY:写时复制
- PAGE_EXECUTE:可履行
- PAGE_EXECUTE_READ:可履行和只读
- PAGE_EXECUTE_READWRITE:可履行和可读可写
- PAGE_EXECUTE_WRITECOPY:可履行和写时复制
- dwMaximumSizeHigh和dwMaximumSizeLow:用于指定文件映照对象的大小,最大可以映照4GB的文件。如果设置为0,则表示映照全部文件。
- lpName:文件映照对象的名称,可以为NULL。
函数返回值为文件映照对象的句柄,如果函数调用失败,则返回NULL。
使用示例:
```c++
HANDLE hFile = CreateFile(
L"test.txt", // 文件路径
GENERIC_READ | GENERIC_WRITE, // 访问权限
0, // 共享模式
NULL, // 安全属性
OPEN_ALWAYS, // 文件打开模式
FILE_ATTRIBUTE_NORMAL, // 文件属性
NULL // 模板文件句柄
);
// 创建文件映照对象
HANDLE hMapping = CreateFileMapping(
hFile, // 文件句柄
NULL, // 安全属性
PAGE_READWRITE, // 访问保护属性
0, // 文件映照对象的大小,高位
0, // 文件映照对象的大小,低位
L"MyMappingObject" // 文件映照对象的名称
);
if (hMapping == NULL) {
// 创建失败,处理毛病
} else {
// 创建成功,继续其他操作
}
// 使用终了后,记得关闭文件句柄和文件映照对象句柄
CloseHandle(hMapping);
CloseHandle(hFile);
```
以上示例代码演示了怎样创建一个文件映照对象,并使用CreateFileMapping函数创建了一个文件映照对象。使用完成后,还需调用CloseHandle函数关闭文件句柄和文件映照对象句柄。