Share via


DeleteTimerQueueTimer 関数 (threadpoollegacyapiset.h)

タイマー キューからタイマーを削除し、必要に応じて、タイマーを削除する前に、現在実行中のタイマー コールバック関数が完了するまで待機します。

構文

BOOL DeleteTimerQueueTimer(
  [in, optional] HANDLE TimerQueue,
  [in]           HANDLE Timer,
  [in, optional] HANDLE CompletionEvent
);

パラメーター

[in, optional] TimerQueue

タイマー キューへのハンドル。 このハンドルは、 CreateTimerQueue 関数によって返されます。

タイマーが既定のタイマー キューを使用して作成された場合、このパラメーターは NULL である必要があります。

[in] Timer

タイマー キュー タイマーのハンドル。 このハンドルは、 CreateTimerQueueTimer 関数によって返されます。

[in, optional] CompletionEvent

システムがタイマーを取り消し、すべてのコールバック関数が完了したときに通知されるイベント オブジェクトへのハンドル。 このパラメーターは、NULL でもかまいません。

このパラメーターが INVALID_HANDLE_VALUEされている場合、関数は実行中のタイマー コールバック関数が完了するまで待機してから、 を返します。

このパラメーターが NULL の場合、関数はタイマーに削除のマークを付け、直ちにを返します。 タイマーの有効期限が既に切れている場合、タイマー コールバック関数は完了まで実行されます。 ただし、タイマー コールバック関数が完了したときに通知は送信されません。 ほとんどの呼び出し元は、このオプションを使用しないでください。必要なクリーンアップを実行できるように、タイマー コールバック関数の実行が完了するまで待つ必要があります。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 エラー コードが ERROR_IO_PENDING場合は、この関数を再度呼び出す必要はありません。 その他のエラーが発生した場合は、呼び出しを再試行する必要があります。

注釈

スレッドが偽装を使用している間は、この関数を呼び出すことはできません。 結果の動作は未定義です。

コールバック関数がタイマー スレッドで実行されない限り、別のタイマーのタイマー コールバック内からこの関数を呼び出すときに、CompletionEvent を INVALID_HANDLE_VALUE に設定できます。 ただし、2 つのコールバック関数が互いのタイマーで DeleteTimerQueueTimer 呼び出しをブロックしようとすると、デッドロックが発生する可能性があります。 さらに、コールバックに関連付けられているタイマーでブロック削除呼び出しを行うことはできません。

永続的なスレッドでブロッキング DeleteTimerQueueTimer 呼び出しを行う場合は注意してください。 削除中のタイマーが WT_EXECUTEINPERSISTENTTHREADで作成された場合は、デッドロックが発生する可能性があります。

未処理のコールバック関数があり、 CompletionEventNULL の場合、関数は失敗し、エラー コードを ERROR_IO_PENDING に設定します。 これは、未処理のコールバック関数があることを示します。 これらのコールバックは、実行されるか、実行中です。 コールバック関数の実行が完了すると、タイマーがクリーンアップされます。

タイマー キュー内のすべてのタイマーを取り消すには、 DeleteTimerQueueEx 関数を呼び出します。

この関数を使用するアプリケーションをコンパイルするには、 _WIN32_WINNT を 0x0500 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー threadpoollegacyapiset.h
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

CreateTimerQueue

CreateTimerQueueTimer

DeleteTimerQueueEx

同期関数

タイマー キュー