0
我想在MSDN上按照本教程:Creating Named Shared Memory。CreateFileMapping()返回null
不幸的是,我從CreateFileMapping()
得到NULL
。文件shmfile.txt
存在於我的文件系統中,所以我認爲不會發生問題,映射將被創建,並且該文件將扮演我的共享內存對象的角色。
我在做什麼錯?
這是我的代碼:
...
#define BUF_SIZE 256
TCHAR szName[]=TEXT("C:\\Users\\joe\\shmfolder\\shmfile.txt");
int main(){
HANDLE hMapFile; // filehandle
LPCTSTR pBuf;
hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
BUF_SIZE, // maximum object size (low-order DWORD)
szName); // name of mapping object
if (hMapFile == NULL)
{
_tprintf(TEXT("Could not create file mapping object (%d).\n"), GetLastError());
return 1;
}
...
}
你應該先'的CreateFile()'來得到一個處理你的文件,然後使用文件句柄調用'CreateFileMapping()'作爲第一個參數。並確保你正在調用正確版本的函數(對於ANSI字符串''CreateFileMappingA()'或對於寬字符串''CreateFileMappingW()')。 – Chen