いくつかのイベントハンドルがあり、それらをリストに追加します。これらのハンドルを保存し、ローカルのハンドルを閉じて、保存したハンドルを後で使用できるかどうかを知りたいです。
例:
std::map<std::string, HANDLE> Events;
DWORD OpenSingleEvent(std::string EventName, bool InheritHandle, DWORD dwDesiredAccess, DWORD dwMilliseconds)
{
Handle hEvent = OpenEvent(dwDesiredAccess, InheritHandle, EventName.c_str()); //Local Handle.
if (hEvent)
{
DeleteSingleEvent(EventName); //Delete the correct/old handle in the map.
Events.insert(EventName, hEvent); //Add this new handle to the map.
DWORD Result = WaitForSingleObject(hEvent, dwMilliseconds);
CloseHandle(hEvent); //Close THIS handle. Not the one in my Map.
return Result;
}
CloseHandle(hEvent); //Close this handle.
return WAIT_FAILED;
}
上記は機能しますか?そうでない場合、これを行う別の方法はありますか?これは共有メモリ通信用であり、サーバーではなくクライアントPIDしかないため、ハンドルを複製できません。
また、誰かがInheritHandleの機能を説明できますか?私が使用している関数はOpenEventであり、そのパラメーターがありますが、それが何をするのかわかりません。