KeRevertToUserAffinityThreadEx 関数 (wdm.h)

KeRevertToUserAffinityThreadEx ルーチンは、現在のスレッドの以前のアフィニティを復元します。

構文

void KeRevertToUserAffinityThreadEx(
  [in] KAFFINITY Affinity
);

パラメーター

[in] Affinity

現在のスレッドの新しいシステム アフィニティを指定する KAFFINITY 型の変数。 このパラメーターを、 KeSetSystemAffinityThreadEx ルーチンの以前の呼び出しによって返された値に設定します。

戻り値

なし

解説

KeRevertToUserAffinityThreadEx は 、現在のスレッドのアフィニティを変更します。 アフィニティ値は、スレッドを実行できるプロセッサのセットを識別するマスクです。 成功した場合、ルーチンは、このセット内のプロセッサで実行するようにスレッドをスケジュールします。

Affinity 値が 0 以外の場合、KeRevertToUserAffinityThreadEx はスレッドのアフィニティ マスクを Affinity 値に設定します。 Affinity 値が 0 の場合、KeRevertToUserAffinityThreadEx はスレッドの元のユーザー アフィニティ マスクを復元します。 この元のユーザー アフィニティ マスクは、KeSetSystemAffinityThreadEx の以前の呼び出しによってスレッド オブジェクトに保存されました。 KeRevertToUserAffinityThreadEx の呼び出しは、KeSetSystemAffinityThreadEx の呼び出しの前に存在しない限り、効果はありません。

Affinity 値が 0 以外の場合、ルーチンは、次の両方が true の場合にのみ、現在のスレッドのアフィニティ マスクを Affinity 値に変更します。

  • Affinity 値は有効です (つまり、論理プロセッサに対応するマスク ビットのみが設定されます)。
  • Affinity 値で指定されているプロセッサの少なくとも 1 つがアクティブです。
これらの条件のいずれかが満たされない場合、 KeRevertToUserAffinityThreadEx の呼び出しは無効です。

Windows 7 以降のバージョンの Windows では、プロセッサ グループがサポートされています。 プロセッサ グループに関する情報を処理するように設計されたドライバーでは、 KeRevertToUserGroupAffinityThread ルーチンを使用する必要があります。このルーチンは、 KeRevertToUserAffinityThreadEx ではなく、プロセッサ グループを指定します。このルーチンは使用しません。 ただし、Windows 7 以降のバージョンの Windows での KeRevertToUserAffinityThreadEx の実装では、プロセッサ グループをサポートしていない以前のバージョンの Windows 用に作成されたドライバーとの互換性が提供されます。 この実装では、0 以外の Affinity 値は、スレッドを実行できるグループ 0 の論理プロセッサのセットを指定するアフィニティ マスクです。 Affinity が 0 の場合、スレッドは元のユーザー モード グループ番号とアフィニティ マスクに戻ります。

KERevertToUserAffinityThreadEx が IRQL <= APC_LEVEL で呼び出され、呼び出しが成功した場合、新しい (元に戻された) アフィニティ マスクが直ちに有効になります。 呼び出しが返されると、呼び出し元のスレッドは、新しいアフィニティ マスクで指定されたプロセッサで既に実行されています。 KERevertToUserAffinityThreadEx が IRQL = DISPATCH_LEVEL で呼び出され、呼び出しが成功した場合、保留中のプロセッサの変更は、呼び出し元が IRQL を下げるまで延期DISPATCH_LEVEL。

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (「解説」セクションを参照)。
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

KAFFINITY

KeRevertToUserGroupAffinityThread

KeSetSystemAffinityThreadEx