イベント

static HANDLE s_event1 = NULL;

//////////////////////////////////////////////////
// 作成
bool createEvent()
{
if(s_event1) return false;

const BOOL bManualReset = FALSE;// TRUE:手動リセット / FALSE:自動リセット
const BOOL bInitialState = FALSE;// TRUE:シグナル状態 / FALSE:非シグナル状態

s_event1 = ::CreateEvent(NULL, bManualReset, bInitialState, NULL);
if(!s_event1) return false;

return true;
}

//////////////////////////////////////////////////
// 破棄
bool deleteEvent()
{
if(!s_event1) return false;

if(!::CloseHandle(s_event1)) return false;

s_event1 = NULL;

return true;
}

//////////////////////////////////////////////////
// 待機
bool waitEvent()
{
if(!s_event1) return false;

const DWORD ret = ::WaitForSingleObject(s_event1, INFINITE);
switch(ret)
{
case WAIT_OBJECT_0:// ON
break;

case WAIT_TIMEOUT:// OFF
break;

case WAIT_ABANDONED:// 放棄 => OFF
break;

case WAIT_FAILED:// 失敗
default:
return false;
}

return true;
}

//////////////////////////////////////////////////
// ON
bool onEvent()
{
if(!s_event1) return false;

return (!::SetEvent(s_event1)) ? true : false;
}

//////////////////////////////////////////////////
// OFF
bool offEvent()
{
if(!s_event1) return false;

return (!::ResetEvent(s_event1)) ? true : false;
}
最終更新:2011年12月22日 14:31
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。