在C++中,可以使用CreateFileMapping函數來創建一個文件映射對象。該函數的原型如下:
HANDLE CreateFileMapping(
HANDLE hFile,
LPSECURITY_ATTRIBUTES lpAttributes,
DWORD flProtect,
DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow,
LPCTSTR lpName
);
參數解釋如下:
hFile:要映射到文件的句柄。
lpAttributes:指定文件映射對象的安全屬性,默認為NULL。
flProtect:指定文件映射對象的保護模式,可以是以下幾種取值之一:
PAGE_READONLY:只讀模式。
PAGE_READWRITE:可讀寫模式。
PAGE_WRITECOPY:寫時復制模式。
dwMaximumSizeHigh:文件映射對象的最大大小(高32位),如果文件大小為0,則使用此參數。
dwMaximumSizeLow:文件映射對象的最大大小(低32位),如果文件大小為0,則使用此參數。
lpName:指定文件映射對象的名稱,可以是NULL。
下面是一個使用CreateFileMapping函數創建文件映射對象的示例代碼:
#include <Windows.h>
int main()
{
// 打開文件
HANDLE hFile = CreateFile(
L"test.txt",
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
// 創建文件映射對象
HANDLE hMapping = CreateFileMapping(
hFile,
NULL,
PAGE_READONLY,
0,
0,
NULL
);
// 關閉文件和文件映射對象的句柄
CloseHandle(hFile);
CloseHandle(hMapping);
return 0;
}
在這個示例中,首先使用CreateFile打開一個名為"test.txt"的文件,并獲得文件句柄hFile。然后使用CreateFileMapping函數創建一個文件映射對象hMapping,指定保護模式為PAGE_READONLY。最后使用CloseHandle函數關閉文件和文件映射對象的句柄。