Menggunakan Penghitung Kinerja Mode Kernel

Komponen mode kernel menyediakan penghitung kinerja menggunakan API Penghitung Kinerja untuk Windows (PCW).

Gunakan langkah-langkah berikut untuk mengembangkan penyedia data penghitung baru:

  1. Tulis manifes penghitung yang menjelaskan penyedia dan penghitungnya. Manifes penghitung adalah file format XML yang menentukan penyedia penghitung kinerja dan set penghitungnya.

    • Atur applicationIdentity atribut ke nama biner yang akan diinstal sebagai bagian dari komponen mode kernel Anda dan yang akan berisi sumber daya string yang diperlukan oleh konsumen data performa.
    • Atur providerType atribut ke kernelMode.
    • Tentukan setidaknya satu struct elemen (di bawah counterSet/structs) dengan nama struktur C/C++ yang akan digunakan saat meneruskan nilai penghitung dari komponen Anda ke API PCW.
    • Di setiap counter, tentukan struct dan field dari mana PCW harus membaca nilai penghitung.
  2. Sebagai bagian dari proses build untuk komponen Anda, gunakan alat CTRPP untuk mengkompilasi manifes penghitung. (Alat Counter Preprocessor (CTRPP) disertakan dalam WDK dan tersedia di Prompt Perintah Pengembang dengan mengetik ctrpp.) Alat CTRPP akan menghasilkan .rc file dan .h file.

    • File yang dihasilkan .rc CTRPP harus dikompilasi oleh alat Resource Compiler (RC.exe), dan file yang .res dihasilkan harus ditautkan ke dalam biner bernama dalam applicationIdentity atribut . Anda dapat langsung mengkompilasi file yang dihasilkan .rc CTRPP atau Anda dapat #include membuat file yang dihasilkan .rc CTRPP ke dalam file yang ada .rc yang sedang dikompilasi ke dalam biner.
    • File yang dihasilkan .h CTRPP berisi fungsi pembantu yang membungkus API PCW yang mendasar. Misalnya, file yang dihasilkan .h CTRPP akan berisi fungsi RegisterXxx yang memanggil PcwRegister atas nama Anda. Dalam kebanyakan kasus, Anda akan memanggil fungsi pembantu yang dihasilkan CTRPP alih-alih memanggil API PCW secara langsung, tetapi Anda dapat merujuk ke dokumentasi untuk API PCW untuk memahami apa yang dilakukan fungsi yang dihasilkan CTRPP yang sesuai. Fungsi pembantu mengelola penerjemahan tata letak data penghitung komponen ke dalam tata letak yang PCW_DATA diharapkan oleh API PCW.
  3. Pada inisialisasi komponen, panggil fungsi RegisterXxx yang dihasilkan CTRPP, yang memanggil PcwRegister. Pada pematian komponen, panggil fungsi UnregisterXxx yang dihasilkan CTRPP, yang memanggil PcwUnregister.

  4. Tambahkan kode untuk menyediakan data penghitung. Ini dilakukan dengan menerapkan fungsi panggilan balik PCW_CALLBACK atau dengan mempertahankan struktur data dengan nilai penghitung untuk setiap instans dan memanggil fungsi CreateInstanceXxx dan CloseInstanceXxx yang dihasilkan CTRPP saat instans dibuat dan dihancurkan.

  5. Pada penginstalan komponen, gunakan lodctr /m:<CounterManifest> <InstallPath> untuk menginstal penyedia. Pada penghapusan instalasi komponen, gunakan unlodctr (dengan /m atau /g parameter) untuk menghapus instalan penyedia. Menginstal penyedia menambahkan counterset penyedia ke repositori seluruh sistem dari counterset yang tersedia sehingga counterset dapat digunakan oleh konsumen data performa seperti perfmon, typeperf, atau WMI. Secara khusus, menginstal penyedia merekam jalur lengkap ke biner (file DLL, SYS, atau EXE) yang berisi tabel string penyedia. Jalur lengkap ke biner ditentukan dengan menggabungkan atribut manifes applicationIdentity dengan <CounterManifest> nilai dan <InstallPath> yang digunakan pada lodctr baris perintah sebagai berikut:

    • applicationIdentity Jika atribut adalah jalur lengkap, atribut akan digunakan.
    • Jika tidak, jika <InstallationPath> parameter adalah jalur lengkap, parameter tersebut akan digunakan.
    • Jika tidak, jika <CounterManifest> parameter adalah jalur lengkap, direktori dari <CounterManifest> akan dikombinasikan dengan nama file dari applicationIdentity atribut .
    • Jika tidak, direktori kerja saat ini akan dikombinasikan dengan nama file dari applicationIdentity atribut .

Untuk contoh penyedia PCW mode kernel, lihat Sampel Penghitung Kernel (Kcs) di repositori sampel driver Windows di GitHub.

Lihat juga

Pemantauan Performa Mode Kernel

PcwRegister

PCW_CALLBACK

Skema Penghitung Kinerja

Alat CTRPP