Bagikan melalui


Menyediakan data penghitung menggunakan versi 2.0

Penyedia data performa modern menggunakan manifes untuk menentukan data penghitung dan menggunakan API penyedia penghitung kinerja untuk mengelola data dalam konteks penyedia. Penyedia yang diimplementasikan menggunakan API penyedia manifes dan penghitung kinerja sering disebut penyedia V2. Windows mendukung penyedia V2 mode pengguna pada Windows Vista atau yang lebih baru dan penyedia V2 mode kernel pada Windows 7 atau yang lebih baru.

Halaman ini menjelaskan penyedia V2 mode pengguna. Untuk informasi tentang penyedia V2 mode kernel, lihat Pemantauan Performa Mode Kernel.

Pada runtime, penyedia V2 berfungsi sebagai berikut:

  • Proses penyedia mendaftarkan dirinya dengan sistem Penghitung Kinerja Windows dengan memanggil PerfStartProvider dan PerfSetCounterSetInfo. Penyedia secara opsional menyediakan fungsi panggilan balik yang akan diberi tahu tentang permintaan konsumen.
  • Proses penyedia menambahkan atau menghapus instans yang sesuai menggunakan PerfCreateInstance dan PerfDeleteInstance. Penyedia memperbarui nilai penghitung saat berubah menggunakan API PerfSet***.
  • Konsumen membuat permintaan data dari penghitung. Sistem memverifikasi bahwa penelepon memiliki izin untuk mengumpulkan data. Sistem kemudian menggunakan utas pekerja yang berjalan dalam proses penyedia untuk menangani permintaan, memanggil fungsi panggilan balik penyedia jika sesuai. Utas pekerja menyalin data yang dikumpulkan ke dalam buffer yang dikelola sistem, dan sistem kemudian mengembalikan data ke konsumen.

Langkah-langkah untuk membuat penyedia

  1. Tulis manifes yang menentukan data penghitung yang akan disediakan penyedia Anda. Untuk detail tentang menulis manifes, lihat Skema Penghitung Kinerja.

  2. Gunakan CTRPP untuk menghasilkan kode templat yang Anda sertakan di penyedia Anda. Kode templat mencakup struktur yang menentukan set penghitung, fungsi CounterInitialize dan CounterCleanup , dan string sumber daya.

    Penyedia Anda harus memanggil fungsi CounterInitialize dan CounterCleanup . CounterInitialize memanggil fungsi PerfStartProvider untuk mendaftarkan penyedia dan juga memanggil fungsi PerfSetCounterSetInfo untuk menginisialisasi set penghitung. CounterCleanup memanggil fungsi PerfStopProvider untuk menghapus pendaftaran penyedia.

  3. Sertakan kode templat dari langkah sebelumnya dalam proyek Anda dan selesaikan penyedia Anda.

    Untuk menyelesaikan penyedia, Anda perlu memanggil fungsi PerfCreateInstance untuk setiap instans set penghitung yang Anda sediakan.

    Untuk mengatur nilai penghitung, panggil salah satu fungsi berikut:

    Manfaat menggunakan PerfSetCounterRefValue adalah Anda tidak perlu melakukan panggilan fungsi untuk mengatur atau memperbarui nilai penghitung, Anda cukup memperbarui variabel penghitung lokal Anda (variabel tempat titik referensi) dan Penghitung Kinerja menggunakan penunjuk untuk mengakses nilai penghitung.

    Jika Anda tidak menggunakan PerfSetCounterRefValue, Anda dapat menggunakan fungsi berikut untuk meningkatkan atau mengurangi nilai penghitung:

    Sebelum penyedia keluar, penyedia harus memanggil PerfDeleteInstance untuk setiap instans set penghitung yang dibuatnya.

    Jika Anda menentukan atribut panggilan balik di elemen penyedia dalam manifes Anda atau menggunakan argumen -NotificationCallback saat memanggil CTRPP, Anda harus menerapkan fungsi panggilan balik ControlCallback . Anda meneruskan fungsi panggilan balik ke CounterInitialize.

    Jika Anda menggunakan -MemoryRoutines saat memanggil CTRPP, Anda harus menerapkan fungsi panggilan balik AllocateMemory dan FreeMemory . Anda meneruskan fungsi panggilan balik ke CounterInitialize.

  4. Saat menginstal penyedia Anda, gunakan alat LodCtr untuk menulis nama file biner yang berisi string sumber daya yang dilokalkan dan ID sumber daya ke registri. Untuk detail tentang menggunakan LodCtr, lihat Skema Penghitung Kinerja.

  5. Saat menghapus instalan penyedia Anda, gunakan alat UnlodCtr untuk menghapus informasi penyedia Anda dari registri.