Невозможно создать сопоставление файлов для файла, который я только что открыл, получить «путь не найден» - PullRequest
0 голосов
/ 01 февраля 2012

Я пытаюсь использовать функцию 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 Ответ

1 голос
/ 02 февраля 2012

Хорошо, я немного покопался (я должен был быть заранее, я знаю). Последний параметр CreateFileMapping() должен быть строкой, НЕ содержащей обратной косой черты. И я использовал путь к файлу, который я создал в качестве этого параметра (чтобы сделать его уникальным именем). Таким образом, возвращенная ошибка фактически применялась к этому параметру, а НЕ к дескриптору файла, переданному в качестве первого параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...