SetWaitableTimer 関数 (synchapi.h)
指定された待機可能タイマーをアクティブにします。 期限が到着すると、タイマーが通知され、タイマーを設定したスレッドが省略可能な完了ルーチンを呼び出します。
構文
BOOL SetWaitableTimer(
[in] HANDLE hTimer,
[in] const LARGE_INTEGER *lpDueTime,
[in] LONG lPeriod,
[in, optional] PTIMERAPCROUTINE pfnCompletionRoutine,
[in, optional] LPVOID lpArgToCompletionRoutine,
[in] BOOL fResume
);
パラメーター
[in] hTimer
タイマー オブジェクトのハンドル。 CreateWaitableTimer または OpenWaitableTimer 関数は、このハンドルを返します。
ハンドルには、TIMER_MODIFY_STATE アクセス権が必要です。 詳細については、「同期オブジェクトのセキュリティとアクセス権のを
[in] lpDueTime
タイマーの状態がシグナル通知に設定されるまでの時間 (100 ナノ秒間隔)。
FILETIME 構造体で記述されている形式を使用します。 正の値は絶対時間を示します。 システムでは内部的に UTC ベースの時刻が使用されるため、UTC ベースの絶対時間を使用してください。 負の値は相対時間を示します。 実際のタイマーの精度は、ハードウェアの機能によって異なります。 UTC ベースの時刻の詳細については、「システム時刻を
Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008、Windows Server 2008 R2: 相対時間が指定されている場合、タイマーには低電力状態で費やされた時間が含まれます。 たとえば、タイマーは、コンピューターがスリープ状態の間もカウントダウンを続けます。
Windows 8 以降、Windows Server 2012 以降: 相対時間が指定されている場合、タイマーには低電力状態で費やされた時間は含まれません。 たとえば、タイマーは、コンピューターがスリープ状態の間、カウントダウンを続行しません。
[in] lPeriod
タイマーの期間 (ミリ秒単位)。
lPeriod が 0 の場合、タイマーは 1 回通知されます。
lPeriod が 0 より大きい場合、タイマーは定期的です。 定期的なタイマーは、
[in, optional] pfnCompletionRoutine
省略可能な完了ルーチンへのポインター。 完了ルーチンは、タイマーが通知されたときに実行される PTIMERAPCROUTINE
[in, optional] lpArgToCompletionRoutine
完了ルーチンに渡される構造体へのポインター。
[in] fResume
このパラメーターが TRUE
戻り値
関数が成功した場合、戻り値は 0 以外です。
関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError
備考
タイマーは最初は非アクティブです。 タイマーをアクティブにするには、SetWaitableTimer
指定された期限が到着すると、タイマーは非アクティブになり、未処理の APC が既にキューに登録されていない場合は、タイマーを設定するスレッドにオプションの APC がキューに入れられます。
タイマーの状態はシグナル状態に設定され、タイマーは指定された期間を使用して再アクティブ化され、タイマーを設定したスレッドは警告可能な待機状態になると完了ルーチンを呼び出します。
詳細については、QueueUserAPC
タイマーを設定したスレッドが終了し、関連する完了ルーチンがある場合、タイマーは取り消されます。 ただし、タイマーの状態は変更されません。 完了ルーチンがない場合、スレッドを終了してもタイマーには影響しません。
手動リセット タイマーがシグナル状態に設定されている場合、タイマーをリセットするために SetWaitableTimer
システム時間を調整すると、未処理の絶対タイマーの期限が調整されます。
この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT を 0x0400 以降として定義します。 詳細については、「Windows ヘッダーの使用」を参照してください。
タイマーを使用してウィンドウのイベントをスケジュールするには、SetTimer 関数を使用します。
タイマーを処理する API では、さまざまなハードウェア クロックが使用されます。 これらのクロックの解像度は、予想と大きく異なる場合があります。一部の解像度は、ナノ秒単位 (ACPI または TSC カウンターを使用する場合) にミリ秒単位で測定できます (RTC ベースのタイマー チップを使用する場合)。
例
SetWaitableTimer
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | synchapi.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2 の Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
CancelWaitableTimer の
CreateWaitableTimer の
待機可能タイマー オブジェクト を