次の方法で共有


ExecuteUmsThread 関数 (winbase.h)

指定した UMS ワーカー スレッドを実行します。

警告

Windows 11時点では、ユーザー モードのスケジュール設定はサポートされていません。 すべての呼び出しがエラー ERROR_NOT_SUPPORTEDで失敗します。

構文

BOOL ExecuteUmsThread(
  [in, out] PUMS_CONTEXT UmsThread
);

パラメーター

[in, out] UmsThread

実行するワーカー スレッドの UMS スレッド コンテキストへのポインター。

戻り値

関数が成功した場合、値は返されません。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 考えられるエラー コードは次のとおりです。

リターン コード 説明
ERROR_RETRY
指定された UMS ワーカー スレッドは、システムによって一時的にロックされます。 呼び出し元は操作を再試行できます。
ERROR_NOT_SUPPORTED
UMS はサポートされていません。

注釈

ExecuteUmsThread 関数は、指定された UMS ワーカー スレッドの状態を、呼び出し元の UMS スケジューラ スレッドの状態に読み込んで、ワーカー スレッドを実行できるようにします。 ワーカー スレッドは、 UmsThreadYield 関数、ブロック、または終了を呼び出して生成されるまで実行されます。

ワーカー スレッドが生成またはブロックすると、システムはスケジューラ スレッドの UmsSchedulerProc エントリ ポイント関数を呼び出します。 以前にブロックされたワーカー スレッドがブロック解除されると、システムはワーカー スレッドの作成時に UpdateProcThreadAttribute 関数で指定された完了リストにワーカー スレッドをキューに入れます。

ExecuteUmsThread 関数は、エラーが発生しない限りを返しません。 関数がERROR_RETRYを返す場合、エラーは推移的であり、操作を再試行できます。

関数がERROR_RETRY以外のエラーを返す場合、アプリケーションのスケジューラは、UmsThreadIsSuspended または UmsThreadIsTerminated を使用して QueryUmsThreadInformation を呼び出してスレッドを中断または終了するかどうかをチェックする必要があります。 その他のエラーとしては、UMS スケジューラ スレッドではないスレッドで関数を呼び出す、無効な UMS ワーカー スレッド コンテキストを渡す、別のスケジューラ スレッドで既に実行されているワーカー スレッドの指定などがあります。

要件

要件
サポートされている最小のクライアント Windows 7 (64 ビットのみ) [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winbase.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll
API セット api-ms-win-core-ums-l1-1-0 (Windows 7 で導入)

こちらもご覧ください

UmsSchedulerProc

UmsThreadYield

UpdateProcThreadAttribute