溫馨提示×

createfilemapping函數(shù)怎么使用

小億
103
2023-08-06 04:18:10
欄目: 編程語言

CreateFileMapping函數(shù)用于創(chuàng)建或打開一個文件映射對象。

函數(shù)原型如下:

HANDLE CreateFileMapping(

HANDLE hFile,

LPSECURITY_ATTRIBUTES lpFileMappingAttributes,

DWORD flProtect,

DWORD dwMaximumSizeHigh,

DWORD dwMaximumSizeLow,

LPCTSTR lpName

);

參數(shù)解釋如下:

  • hFile:要映射到文件的句柄,可以是文件、設(shè)備或者文件/設(shè)備的虛擬文件。如果設(shè)置為INVALID_HANDLE_VALUE,則表示要創(chuàng)建一個內(nèi)存映射。

  • lpFileMappingAttributes:用于指定文件映射對象的安全屬性,一般設(shè)置為NULL。

  • flProtect:指定文件映射對象的訪問保護屬性,可以是下列值之一:

  • PAGE_READONLY:只讀

  • PAGE_READWRITE:可讀可寫

  • PAGE_WRITECOPY:寫時復(fù)制

  • PAGE_EXECUTE:可執(zhí)行

  • PAGE_EXECUTE_READ:可執(zhí)行和只讀

  • PAGE_EXECUTE_READWRITE:可執(zhí)行和可讀可寫

  • PAGE_EXECUTE_WRITECOPY:可執(zhí)行和寫時復(fù)制

  • dwMaximumSizeHigh和dwMaximumSizeLow:用于指定文件映射對象的大小,最大可以映射4GB的文件。如果設(shè)置為0,則表示映射整個文件。

  • lpName:文件映射對象的名稱,可以為NULL。

函數(shù)返回值為文件映射對象的句柄,如果函數(shù)調(diào)用失敗,則返回NULL。

使用示例:

HANDLE hFile = CreateFile(
L"test.txt",                   // 文件路徑
GENERIC_READ | GENERIC_WRITE,  // 訪問權(quán)限
0,                             // 共享模式
NULL,                          // 安全屬性
OPEN_ALWAYS,                   // 文件打開模式
FILE_ATTRIBUTE_NORMAL,         // 文件屬性
NULL                           // 模板文件句柄
);
// 創(chuàng)建文件映射對象
HANDLE hMapping = CreateFileMapping(
hFile,                 // 文件句柄
NULL,                  // 安全屬性
PAGE_READWRITE,        // 訪問保護屬性
0,                     // 文件映射對象的大小,高位
0,                     // 文件映射對象的大小,低位
L"MyMappingObject"     // 文件映射對象的名稱
);
if (hMapping == NULL) {
// 創(chuàng)建失敗,處理錯誤
} else {
// 創(chuàng)建成功,繼續(xù)其他操作
}
// 使用完畢后,記得關(guān)閉文件句柄和文件映射對象句柄
CloseHandle(hMapping);
CloseHandle(hFile);

以上示例代碼演示了如何創(chuàng)建一個文件映射對象,并使用CreateFileMapping函數(shù)創(chuàng)建了一個文件映射對象。使用完成后,還需調(diào)用CloseHandle函數(shù)關(guān)閉文件句柄和文件映射對象句柄。

0