DeleteTimerQueueTimer

タイマーをタイマーキューから削除する。オプションで、タイマーを削除する前に現在実行中のタイマーコールバック関数の完了を待つ。

DeleteTimerQueueTimer TimerQueue, Timer, CompletionEvent

TimerQueue : [intptr] タイマーキューへのハンドル。このハンドルは CreateTimerQueue 関数が返す。
Timer : [intptr] タイマーキュータイマーへのハンドル。このハンドルは CreateTimerQueueTimer 関数が返す。
CompletionEvent : [intptr] システムがタイマーをキャンセルしすべてのコールバック関数が完了したときにシグナルされるイベントオブジェクトへのハンドル。このパラメータは NULL でもよい。

(プラグイン / モジュール : kernel32.dll)

解説

タイマーをタイマーキューから削除する。オプションで、タイマーを削除する前に現在実行中のタイマーコールバック関数の完了を待つ。

[戻り値]
関数が成功した場合、戻り値は 0 以外である。関数が失敗した場合、戻り値は 0 となる。拡張エラー情報を取得するには
GetLastError を呼ぶ。エラーコードが ERROR_IO_PENDING
の場合、この関数を再度呼び出す必要はない。それ以外のエラーの場合、呼び出しを再試行すべきである。

[備考]

この関数はスレッドが偽装を使っている間は呼び出せない。動作は未定義となる。コールバック関数がタイマースレッド内で実行されない限り、別のタイマーのタイマーコールバック内からこの関数を呼ぶときに
CompletionEvent を INVALID_HANDLE_VALUE に設定できる。ただし、2
つのコールバック関数が互いのタイマーに対するブロッキング DeleteTimerQueueTimer
呼び出しを試みるとデッドロックが発生することがある。さらに、コールバックに関連付けられたタイマーに対するブロッキング削除呼び出しはできない。永続スレッドに対するブロッキング
DeleteTimerQueueTimer 呼び出しを行う際は注意が必要である。削除されるタイマーが
WT_EXECUTEINPERSISTENTTHREAD
で作成された場合、デッドロックが発生する可能性がある。未処理のコールバック関数が存在し CompletionEvent が NULL
の場合、関数は失敗しエラーコードを ERROR_IO_PENDING
に設定する。これは未処理のコールバック関数が存在することを示す。それらのコールバックは実行されるか、実行中のいずれかである。タイマーはコールバック関数の実行が終了したときにクリーンアップされる。タイマーキュー内のすべてのタイマーをキャンセルするには
DeleteTimerQueueEx 関数を呼ぶ。この関数を使うアプリケーションをコンパイルするには、_WIN32_WINNT を
0x0500 以降として定義する。詳細は Using the Windows Headers を参照。

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs