Fungsi KeSetHardwareCounterConfiguration (ntddk.h)

Rutinitas KeSetHardwareCounterConfiguration menentukan daftar penghitung perangkat keras yang akan digunakan untuk pembuatan profil utas.

Sintaks

NTSTATUS KeSetHardwareCounterConfiguration(
  [in] PHARDWARE_COUNTER CounterArray,
  [in] ULONG             Count
);

Parameter

[in] CounterArray

Penunjuk ke array HARDWARE_COUNTER yang menjelaskan konfigurasi penghitung perangkat keras yang akan digunakan untuk pembuatan profil utas. Setiap elemen array adalah struktur yang menjelaskan penghitung perangkat keras. Sebelum rutinitas kembali, ia menyalin konten array ini ke dalam struktur data internalnya.

[in] Count

Menentukan jumlah elemen dalam array yang diarahkan oleh parameter CounterArray .

Nilai kembali

KeSetHardwareCounterConfiguration mengembalikan STATUS_SUCCESS jika panggilan berhasil. Kemungkinan nilai pengembalian kesalahan meliputi yang berikut ini:

Menampilkan kode Deskripsi
STATUS_INVALID_PARAMETER Nilai parameter Count melebihi jumlah maksimum penghitung yang ditentukan oleh konstanta MAX_HW_COUNTERS, yang ditentukan dalam file header Ntddk.h.
STATUS_WMI_ALREADY_ENABLED Satu atau beberapa penghitung yang ditentukan dalam array CounterArray sudah diaktifkan.
STATUS_NOT_IMPLEMENTED Rutinitas ini tidak diimplementasikan untuk arsitektur prosesor yang dijalankan pemanggil.

Keterangan

Di Windows 7, rutinitas ini hanya diimplementasikan untuk arsitektur berbasis x86, berbasis x64, dan berbasis Itanium. Jika penelepon berjalan pada arsitektur prosesor yang tidak didukung, rutinitas mengembalikan STATUS_NOT_IMPLEMENTED.

Rutinitas ini memberi tahu sistem operasi penghitung perangkat keras mana yang akan digunakan untuk pembuatan profil utas. Panggil rutinitas ini hanya ketika pembuatan profil utas dinonaktifkan. Jika array CounterArray menentukan penghitung perangkat keras apa pun yang saat ini digunakan, rutinitas gagal dan mengembalikan STATUS_WMI_ALREADY_ENABLED.

Utas aplikasi dapat mengaktifkan pembuatan profil utas untuk mendapatkan serangkaian pengukuran performa dari penghitung perangkat keras di unit pemantauan performa (PMU) prosesor lokal. Sistem operasi hanya mendukung satu aplikasi pembuatan profil pada satu waktu. Instans bersamaan dari aplikasi pembuatan profil utas tidak didukung. Utas dapat mengaktifkan pembuatan profil utas untuk dirinya sendiri tetapi tidak untuk utas lain.

Ketika pembuatan profil utas diaktifkan, sistem operasi menggunakan penghitung perangkat keras yang ditentukan dalam panggilan terakhir ke KeSetHardwareCounterConfiguration. Setiap panggilan KeSetHardwareCounterConfiguration yang berhasil menggantikan konfigurasi penghitung perangkat keras apa pun yang mungkin telah diatur dalam panggilan KeSetHardwareCounterConfiguration sebelumnya.

Atur Jumlah = 0 untuk menentukan konfigurasi penghitung perangkat keras kosong. Konfigurasi ini secara efektif mencegah penggunaan penghitung perangkat keras untuk pembuatan profil utas. Konfigurasi penghitung perangkat keras default yang ada setelah startup sistem dan sebelum panggilan KeSetHardwareCounterConfiguration awal adalah konfigurasi kosong.

Efek dari panggilan KeSetHardwareCounterConfiguration yang berhasil adalah global. Jika utas dalam proses apa pun diprofilkan, profiler menggunakan konfigurasi penghitung perangkat keras yang diatur oleh panggilan terakhir ke KeSetHardwareCounterConfiguration. Dalam sistem multiprosesor, panggilan KeSetHardwareCounterConfiguration mengatur konfigurasi penghitung perangkat keras untuk digunakan untuk pembuatan profil utas di semua prosesor dalam sistem, meskipun setiap prosesor menggunakan serangkaian penghitung perangkat kerasnya sendiri.

Untuk menghindari konflik sumber daya, semua driver yang menggunakan sumber daya penghitung harus menggunakan rutinitas HalAllocateHardwareCounters dan HalFreeHardwareCounters untuk mengoordinasikan berbagi sumber daya ini.

Untuk menentukan apakah pembuatan profil utas diaktifkan untuk utas tertentu, panggil fungsi QueryThreadProfiling .

Untuk mengkueri sistem operasi untuk konfigurasi penghitung perangkat keras yang saat ini berlaku untuk pembuatan profil utas, panggil rutinitas KeQueryHardwareCounterConfiguration .

Perangkat lunak virtualisasi biasanya tidak memvirtualisasi penghitung kinerja perangkat keras. Dengan demikian, penghitung kinerja perangkat keras tidak mungkin tersedia di komputer virtual.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 7.
Target Platform Universal
Header ntddk.h (termasuk Ntddk.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Lihat juga

Referensi Pembuatan Profil Penghitung Perangkat Keras

HARDWARE_COUNTER

HalAllocateHardwareCounters

HalFreeHardwareCounters

KeQueryHardwareCounterConfiguration