50 PConnect(
const std::string& memName, int8_t CREATEMODE___IMiNaSi)
51 : hMapFile(nullptr), pBuf(nullptr), name(
"Global\\"+memName) {
52 hMapFile = CreateFileMapping(
61 if (hMapFile == NULL || hMapFile == INVALID_HANDLE_VALUE) {
62 DWORD errorCode = GetLastError();
63 std::cerr <<
"共有メモリ作成エラー: " << errorCode <<
" (" << PConnect::getLastErrorAsString() <<
")" << std::endl;
65 if (errorCode == ERROR_ACCESS_DENIED) {
66 std::cerr <<
"解決策: 管理者権限を使用するか、共有メモリ名を確認してください。" << std::endl;
67 }
else if (errorCode == ERROR_ALREADY_EXISTS) {
68 std::cerr <<
"解決策: 既存の共有メモリに接続するか、異なる名前を使用してください。" << std::endl;
70 std::cerr <<
"詳細なエラー内容を確認してください。" << std::endl;
73 throw std::runtime_error(
"共有メモリの作成に失敗しました。");
77 pBuf =
static_cast<T*
>(MapViewOfFile(hMapFile, FILE_MAP_WRITE, 0, 0,
sizeof(T)));
79 CloseHandle(hMapFile);
80 throw std::runtime_error(
"共有メモリのマッピングに失敗しました");
90 : hMapFile(nullptr), pBuf(nullptr), name(
"Global\\"+memName) {
91 hMapFile = OpenFileMapping(FILE_MAP_READ | FILE_MAP_WRITE, FALSE, name.c_str());
92 if (!hMapFile)
throw std::runtime_error(
"共有メモリのオープンに失敗しました");
94 pBuf =
static_cast<T*
>(MapViewOfFile(hMapFile, FILE_MAP_WRITE, 0, 0,
sizeof(T)));
96 CloseHandle(hMapFile);
97 throw std::runtime_error(
"共有メモリのマッピングに失敗しました");