DequeueUmsCompletionListItems

指定された UMS 完了リストからユーザーモードスケジューリング (UMS) ワーカースレッドを取得する。

DequeueUmsCompletionListItems UmsCompletionList, WaitTimeOut, UmsThreadList

UmsCompletionList : [intptr] ワーカースレッドを取得する完了リストへのポインタ。
WaitTimeOut : [int] 取得操作のタイムアウト間隔(ミリ秒)。完了リストにワーカースレッドがキューされていなくても、間隔が経過すると関数は戻る。WaitTimeOut パラメータが 0 の場合、ワーカースレッドが利用可能になるのを待たずに完了リストをチェックする。WaitTimeOut パラメータが INFINITE の場合、関数のタイムアウト間隔は決して経過しない。ただし、これは関数が 1 つ以上のワーカースレッドが利用可能になるまでブロックされるため推奨されない。
UmsThreadList : [var] UMS_CONTEXT 変数へのポインタ。出力時、このパラメータは UMS スレッドコンテキストのリスト内の最初の UMS スレッドコンテキストへのポインタを受け取る。WaitTimeOut パラメータで指定したタイムアウトまでにワーカースレッドが利用可能にならない場合、このパラメータは NULL に設定される。

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

解説

指定された UMS 完了リストからユーザーモードスケジューリング (UMS) ワーカースレッドを取得する。

[戻り値]
関数が成功した場合、戻り値は 0 以外である。関数が失敗した場合、戻り値は 0 となる。拡張エラー情報を取得するには
GetLastError を呼ぶ。発生し得るエラー値には次のものが含まれる。
(以下省略)

[備考]
システムは、UMS ワーカースレッドが作成されたとき、または以前にブロックされていたワーカースレッドのブロックが解除されたときに、UMS
ワーカースレッドを完了リストにキューする。DequeueUmsCompletionListItems
関数は、指定された完了リスト内のすべてのスレッドコンテキストのリストへのポインタを取得する。GetNextUmsListItem
関数を使うと、UMS
スレッドコンテキストをリストからスケジューラ自身のレディスレッドキューにポップできる。スケジューラはアプリケーションが選んだ優先度に基づいて実行するスレッドを選択する責任がある。DequeueUmsCompletionListItems
が提供するリストから直接 UMS
スレッドを実行したり、リストが完全に空になる前にレディスレッドキューに移したスレッドを実行したりしてはならない。これはアプリケーションで予測不能な動作を引き起こす可能性がある。複数の呼び出し側が共有完了リストからスレッドを取得しようとした場合、最初の呼び出し側だけがスレッドを取得する。後続の呼び出し側に対しては
DequeueUmsCompletionListItems は成功を返すが、UmsThreadList パラメータは NULL
に設定される。

情報

プラグイン / モジュール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