CreateFile関数のラッパー関数を生成したいとします。
この新しい関数は、ディスク上に実際のファイルを生成するのではなく、ファイル マッピング オブジェクトを作成し、新しいオブジェクトへのハンドルを返します。
この例、Creation Named Shared Memoryを見て、関数を実装しようとしました。
#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.
質問
ファイル マッピング オブジェクトとファイル オブジェクトを同じ意味で使用できますか? もしそうなら、私のコードの問題は何ですか? そうでない場合、そのような機能をどのように実装できますか?