win32 CreateEvent



Win32 Createevent



参照Webページ:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682396(v=vs.85).aspx

名前付きまたは名前なしのイベントオブジェクトを作成または開きます。
オブジェクトのアクセスマスクを指定するには、CreateEventEx関数を使用します。



CreateEvent

HANDLE WINAPI CreateEvent( _In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes, _In_ BOOL bManualReset, _In_ BOOL bInitialState, _In_opt_ LPCTSTR lpName )

パラメーター



lpEventAttributes [in、オプション]

SECURITY_ATTRIBUTES構造体へのポインター。このパラメーターがNULLの場合、ハンドルは子プロセスに継承できません。
構造体のlpSecurityDescriptorメンバーは、新しいイベントのセキュリティ記述子を指定します。 lpEventAttributesがNULLの場合、イベントはデフォルトのセキュリティ記述子を取得します。イベントのデフォルトのセキュリティ記述子のACLは、作成者のプライマリトークンまたは偽装トークンから取得されます。

bManualReset [in]

このパラメーターがTRUEの場合、関数は手動リセットイベントオブジェクトを作成します。これには、ResetEvent関数を使用してイベント状態を非シグナルに設定する必要があります。このパラメーターがFALSEの場合、関数は自動リセットイベントオブジェクトを作成し、単一の待機スレッドが解放された後、システムはイベント状態を非シグナルに自動的にリセットします。

bInitialState [in]

このパラメーターがTRUEの場合、イベントオブジェクトの初期状態が通知されます。それ以外の場合は、通知されません。



lpName [in、オプション]

イベントオブジェクトの名前。名前はMAX_PATH文字に制限されています。名前の比較では大文字と小文字が区別されます。
lpNameが既存の名前付きイベントオブジェクトの名前と一致する場合、この関数はEVENT_ALL_ACCESSアクセス権を要求します。この場合、bManualResetパラメーターとbInitialStateパラメーターは、作成プロセスによって既に設定されているため、無視されます。 lpEventAttributesパラメーターがNULLでない場合、ハンドルを継承できるかどうかを判別しますが、そのセキュリティ記述子メンバーは無視されます。
lpNameがNULLの場合、イベントオブジェクトは名前なしで作成されます。
lpNameが同じ名前空間内の別の種類のオブジェクト(既存のセマフォ、ミューテックス、待機可能タイマー、ジョブ、ファイルマッピングオブジェクトなど)の名前と一致する場合、関数は失敗し、GetLastError関数はERROR_INVALID_HANDLEを返します。これは、これらのオブジェクトが同じ名前空間を共有しているために発生します。
名前には「Global 」または「Local 」プレフィックスを付けて、グローバルまたはセッションの名前名にオブジェクトを明示的に作成できます。名前の残りの部分には、円記号()を除く任意の文字を含めることができます。詳細については、カーネルオブジェクトの名前空間を参照してください。高速ユーザー切り替えは、ターミナルサービスセッションを使用して実装されます。アプリケーションが複数のユーザーをサポートできるように、カーネルオブジェクト名はターミナルサービスで概説されているガイドラインに従う必要があります。
オブジェクトは、プライベート名前空間で作成できます。詳細については、オブジェクトの名前空間を参照してください。
戻り値

関数が成功した場合、戻り値はイベントオブジェクトへのハンドルです。名前付きイベントオブジェクトが関数呼び出しの前に存在していた場合、関数は既存のオブジェクトへのハンドルを返し、GetLastErrorはERROR_ALREADY_EXISTSを返します。
関数が失敗した場合、戻り値はNULLです。拡張エラー情報を取得するには、GetLastErrorを呼び出します。