Скажем, я хочу сгенерировать функцию-оболочку для Создать файл"
Эта новая функция не будет создавать настоящий файл на диске, а создать объект сопоставления файлов и вернуть дескриптор нового объекта.
Я рассмотрел этот пример: Создание именованной общей памяти и попытался реализовать мою функцию:
#define BUF_SIZE 256
TCHAR szName[] = TEXT("Global\\MyFileMappingObject");
HANDLE MyCreateFile()
{
HANDLE 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
return hMapFile;
}
Проблема
Однако мне это показалось нормальным, когда я попытался использовать возвращенный HANDLE
в ReadFile Я получил код ошибки 6 The handle is invalid.
Вопрос
Могут ли объект отображения файла и объект файла использоваться взаимозаменяемо? Если да, то в чем проблема с моим кодом? Если нет, то есть идеи, как реализовать такую функцию?
ReadFile
для именованной области памяти? Он должен использоваться сMapViewOfFile
. - person   schedule 19.03.2015ReadFile
— это просто пример использования возвращенногоHANDLE
изMyCreateFile
. Это здесь, чтобы показать, что реализацияMyCreateFile
ошибочна, и я пытаюсь понять, почему. - person idanshmu   schedule 19.03.2015