无法为刚刚打开的文件创建文件映射,得到“找不到路径”

时间:2012-02-01 13:16:06

标签: c winapi file-manipulation

我正在尝试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(这是一个有效的句柄!),当我在调用GetLastError()之后检查CreateFileMApping()状态时,我得到了ERROR_PATH_NOT_FOUND,这很奇怪,因为另一个函数只是用它来创建文件。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,正在做一些挖掘(我应该事先做过,我知道)。 CreateFileMapping()的最后一个参数应该是不包含反斜杠的字符串。我已经使用我创建的文件路径作为该参数(使其成为一个唯一的名称)。因此,返回的错误实际上是应用于该参数而不是作为第一个参数传递的文件句柄。