EnterUmsSchedulingMode 関数 (winbase.h)

呼び出し元のスレッドをユーザー モード スケジューリング (UMS) スケジューラ スレッドに変換します。

警告

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

構文

BOOL EnterUmsSchedulingMode(
  [in] PUMS_SCHEDULER_STARTUP_INFO SchedulerStartupInfo
);

パラメーター

[in] SchedulerStartupInfo

完了リストや UmsSchedulerProc エントリ ポイント関数など、スレッドの UMS 属性を指定するUMS_SCHEDULER_STARTUP_INFO構造体へのポインター。

戻り値

関数が成功すると、0 以外の値が返されます。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

アプリケーションの UMS スケジューラは、UMS スレッドの実行に使用されるプロセッサごとに 1 つの UMS スケジューラ スレッドを作成します。 スケジューラは通常、1 つのプロセッサのスケジューラ スレッドのアフィニティを設定し、そのスケジューラ スレッドを使用するためにプロセッサを効果的に予約します。 スレッド アフィニティの詳細については、「 複数のプロセッサ」を参照してください。

UMS スケジューラ スレッドが作成されると、システムは EnterUmsSchedulingMode 関数呼び出しで指定された UmsSchedulerProc エントリ ポイント関数を呼び出します。 アプリケーションのスケジューラは、スケジューラ スレッドのアプリケーション固有の初期化を完了し、実行する UMS ワーカー スレッドを選択する役割を担います。

アプリケーションのスケジューラは、ワーカー スレッドの UMS スレッド コンテキストを使用して ExecuteUmsThread を 呼び出すことによって実行する UMS ワーカー スレッドを選択します。 ワーカー スレッドは、 UmsThreadYield、blocks、または terminates を呼び出して制御を生成するまで実行されます。 その後、スケジューラ スレッドを使用して、別のワーカー スレッドを実行できます。

スケジューラ スレッドは、すべてのワーカー スレッドが自然な停止ポイント (つまり、すべてのワーカー スレッドが生成、ブロック、または終了) に達するまで引き続き実行する必要があります。

要件

   
サポートされている最小のクライアント 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 で導入)

関連項目

ExecuteUmsThread

複数のプロセッサ

UMS_SCHEDULER_STARTUP_INFO

UmsSchedulerProc

ユーザー モードのスケジュール設定