我正在尝试CreateFileMapping()
函数(在windows上)。
现在,在这段代码中:
hFile = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_DELETE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, sizeInBlocks*SO_BLOCK_SIZE, filename);
文件已创建,但hFileMapping
的值为NULL
!这很奇怪,因为我使用hFile
(这是一个有效的句柄!),当我在调用CreateFileMApping()
后检查GetLastError()
状态时,我得到了ERROR_PATH_NOT_FOUND
,这很奇怪。因为另一个函数刚刚用它来创建文件。
有什么想法吗?
好吧,一直在做一些挖掘(我知道应该事先做)。CreateFileMapping()
的最后一个参数应该是不包含反斜杠的字符串。我使用了我创建的文件路径作为参数(使其成为唯一的名称)。因此,返回的错误实际上应用于该参数,而不是作为第一个参数传递的文件句柄。