OpenWaitableTimerW 関数 (synchapi.h)
既存の名前付き待機可能タイマー オブジェクトを開きます。
HANDLE OpenWaitableTimerW(
[in] DWORD dwDesiredAccess,
[in] BOOL bInheritHandle,
[in] LPCWSTR lpTimerName
);
[in] dwDesiredAccess
タイマー オブジェクトへのアクセス。 指定したオブジェクトのセキュリティ記述子が呼び出し元プロセスに対して要求されたアクセスを許可しない場合、関数は失敗します。 アクセス権の一覧については、「 同期オブジェクトのセキュリティとアクセス権」を参照してください。
[in] bInheritHandle
この値が TRUE の場合、このプロセスによって作成されたプロセスはハンドルを継承します。 それ以外の場合、プロセスはこのハンドルを継承しません。
[in] lpTimerName
タイマー オブジェクトの名前。 名前は MAX_PATH 文字に制限されます。 名前の比較では大文字と小文字が区別されます。
この関数は、プライベート名前空間内のオブジェクトを開くことができます。 詳細については、「 オブジェクト名前空間」を参照してください。
ターミナル サービス: 名前には、グローバル名前空間またはセッション名前空間内のオブジェクトを明示的に開くために、"Global" または "Local" プレフィックスを付けることができます。 名前の残りの部分には、円記号 (\) を除く任意の文字を含めることができます。 詳細については、「 カーネル オブジェクトの名前空間」を参照してください。
メモ 高速ユーザー切り替えは、ターミナル サービス セッションを使用して実装されます。 最初にログオンするユーザーはセッション 0 を使用し、次にログオンするユーザーはセッション 1 を使用します。 カーネル オブジェクト名は、アプリケーションが複数のユーザーをサポートできるように、ターミナル サービスに関して説明されているガイドラインに従う必要があります。
関数が成功した場合、戻り値はタイマー オブジェクトへのハンドルです。
関数が失敗した場合は、返される値は NULL です。 詳細なエラー情報を得るには、GetLastError を呼び出します。
OpenWaitableTimer 関数を使用すると、複数のプロセスが同じタイマー オブジェクトに対してハンドルを開きます。 関数は、 CreateWaitableTimer 関数を使用してタイマーが既に作成されているプロセスがある場合にのみ成功します。 呼び出し元のプロセスは、待機 関数などのタイマー オブジェクトへのハンドルを必要とする任意の関数で、返されたハンドルを使用できます。 これには、dwDesiredAccess パラメーターで指定されたアクセスの制限が適用されます。
返されたハンドルは、 DuplicateHandle 関数を使用して複製できます。 CloseHandle 関数を使用してハンドルを閉じます。 プロセスが終了すると、ハンドルが自動的に閉じられます。 タイマー オブジェクトは、最後のハンドルが閉じられたときに破棄されます。
この関数を使用するアプリケーションをコンパイルするには、 _WIN32_WINNT を 0x0400 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | synchapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |