AppContainerUtils.zip/TestSharedMemory1/ExampleApp/ExampleApp.cpp
#include <iostream>
#include <sstream>
#include <string>
#include <Windows.h>
#include "../TestSharedMemory/SharedStruct.h"
bool CreateSharedMemory(void *&ptr, const HANDLE handle) {
ptr = ::MapViewOfFile(handle, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if (ptr == NULL) {
return false;
}
return true;
}
int main(const unsigned int argc, const char * const * const argv) {
std::locale::global(std::locale("japanese"));
if (argc != 2) {
std::wcout << "usage: ExampleApp.exe shared_memory_handle" << std::endl;
return 1;
}
std::istringstream iss(argv[1]);
unsigned int handleImpl;
iss >> handleImpl;
const HANDLE handle = reinterpret_cast<HANDLE>(handleImpl);
void * ptr;
if (!CreateSharedMemory(ptr, handle)) {
std::wcout << L"Error: 共有メモリーの生成に失敗しました" << std::endl;
std::wcin.ignore();
return 1;
}
SharedStruct &sharedStruct = *reinterpret_cast<SharedStruct *>(ptr);
while (true) {
std::wstring cmd;
std::wcin >> cmd;
if (cmd == L"exit") {
break;
}
std::wistringstream wiss(cmd);
unsigned int value;
wiss >> value;
sharedStruct.value = value;
sharedStruct.changeFlag = true;
}
return 0;
}