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 で導入) |