Fungsi KeRevertToUserAffinityThreadEx (wdm.h)

Rutinitas KeRevertToUserAffinityThreadEx memulihkan afinitas sebelumnya dari utas saat ini.

Sintaks

void KeRevertToUserAffinityThreadEx(
  [in] KAFFINITY Affinity
);

Parameter

[in] Affinity

Variabel berjenis KAFFINITY yang menentukan afinitas sistem baru dari utas saat ini. Atur parameter ini ke nilai yang dikembalikan oleh panggilan sebelumnya ke rutinitas KeSetSystemAffinityThreadEx .

Nilai kembali

Tidak ada

Keterangan

KeRevertToUserAffinityThreadEx mengubah afinitas utas saat ini. Nilai afinitas adalah masker yang mengidentifikasi sekumpulan prosesor tempat utas dapat berjalan. Jika berhasil, rutinitas menjadwalkan utas untuk berjalan pada prosesor dalam set ini.

Jika nilai Afinitas bukan nol, KeRevertToUserAffinityThreadEx menetapkan masker afinitas utas ke nilai Afinitas . Jika nilai Afinitas adalah nol, KeRevertToUserAffinityThreadEx memulihkan masker afinitas pengguna asli dari utas. Masker afinitas pengguna asli ini disimpan di objek utas oleh panggilan sebelumnya ke KeSetSystemAffinityThreadEx. Panggilan ke KeRevertToUserAffinityThreadEx tidak berpengaruh kecuali didahului oleh panggilan ke KeSetSystemAffinityThreadEx.

Jika nilai Afinitas bukan nol, rutinitas mengubah masker afinitas dari utas saat ini ke nilai Afinitas hanya jika kedua hal berikut ini benar:

  • Nilai Afinitas valid (yaitu, hanya bit mask yang sesuai dengan prosesor logis yang diatur).
  • Setidaknya salah satu prosesor yang ditentukan dalam nilai Afinitas aktif.
Jika salah satu kondisi ini tidak terpenuhi, panggilan ke KeRevertToUserAffinityThreadEx tidak berpengaruh.

Windows 7 dan versi yang lebih baru dari grup prosesor dukungan Windows. Driver yang dirancang untuk menangani informasi tentang grup prosesor harus menggunakan rutinitas KeRevertToUserGroupAffinityThread , yang menentukan grup prosesor, bukan KeRevertToUserAffinityThreadEx, yang tidak. Namun, implementasi KeRevertToUserAffinityThreadEx di Windows 7 dan versi Windows yang lebih baru memberikan kompatibilitas untuk driver yang ditulis untuk versi Windows sebelumnya, yang tidak mendukung grup prosesor. Dalam implementasi ini, nilai Afinitas bukan nol adalah masker afinitas yang menentukan sekumpulan prosesor logis dalam grup 0 tempat utas dapat berjalan. Jika Afinitas adalah nol, utas akan kembali ke nomor grup mode pengguna asli dan masker afinitasnya.

Jika KeRevertToUserAffinityThreadEx dipanggil di IRQL <= APC_LEVEL dan panggilan berhasil, masker afinitas baru (dikembalikan) segera berlaku. Saat panggilan kembali, utas panggilan sudah berjalan pada prosesor yang ditentukan dalam masker afinitas baru. Jika KeRevertToUserAffinityThreadEx dipanggil di IRQL = DISPATCH_LEVEL dan panggilan berhasil, perubahan prosesor yang tertunda ditangguhkan sampai pemanggil menurunkan IRQL di bawah ini DISPATCH_LEVEL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows Vista dan versi Windows yang lebih baru.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (lihat bagian Keterangan).
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Lihat juga

KAFINITAS

KeRevertToUserGroupAffinityThread

KeSetSystemAffinityThreadEx