Bagikan melalui


Membuat DLL Ekstensi Performa

Penting

Karena keterbatasan performa dan keandalan yang signifikan, metode untuk menyediakan data penghitung kinerja yang dijelaskan topik ini dapat diubah atau tidak tersedia di masa mendatang. Sebagai gantinya, Microsoft menyarankan agar Anda menggunakan metode yang dijelaskan dalam Menyediakan Data Penghitung Menggunakan Versi 2.0 untuk membuat penghitung kinerja baru dan Anda memigrasikan penghitung kinerja yang ada untuk menggunakan metode tersebut juga.

Penyedia V1 menggunakan DLL performa yang menyediakan data penghitung kepada konsumen. DLL performa harus mengekspor fungsi OpenPerformanceData, CollectPerformanceData, dan ClosePerformanceData . Biasanya, Anda menggunakan file definisi modul (.def) untuk mengekspor fungsi dari DLL. Sistem memanggil fungsi-fungsi ini saat konsumen mengkueri data performa.

Pertama kali konsumen memanggil RegQueryValueEx, atau jika konsumen menggunakan fungsi RegOpenKey atau RegConnectRegistry untuk membuka HKEY_PERFORMANCE_DATA, sistem memanggil fungsi OpenPerformanceData untuk setiap penyedia yang terdaftar di komputer. Pengecualiannya adalah jika penyedia menentukan daftar objek yang didukungnya di bagian [objects] file .INI. Dalam hal ini, sistem memanggil penyedia hanya jika salah satu objek yang dikueri cocok dengan objek dari daftar.

Fungsi OpenPerformanceData memberi setiap penyedia kesempatan untuk menginisialisasi struktur data performanya. Kemudian, jika fungsi OpenPerformanceData berhasil dikembalikan, sistem memanggil fungsi CollectPerformanceData penyedia. Panggilan berikutnya ke RegQueryValueEx menyebabkan sistem memanggil fungsi CollectPerformanceData .

Ketika konsumen selesai mengumpulkan data performa, konsumen menentukan HKEY_PERFORMANCE_DATA dalam panggilan ke fungsi RegCloseKey . Ini menyebabkan sistem memanggil fungsi ClosePerformanceData untuk setiap penyedia. Penyedia kemudian dibongkar.

Dimungkinkan bagi beberapa konsumen untuk mengumpulkan data performa secara bersamaan. Sistem memanggil fungsi OpenPerformanceData dan ClosePerformanceData hanya sekali setiap kali DLL dimuat atau dibongkar.

Catatan

Pastikan untuk menyertakan ekstern "C" dalam kode C++ Anda untuk mencegah kompilator menambahkan dekorasi ke nama fungsi Anda; jika tidak, sistem mungkin gagal menemukan fungsi Anda.

Catatan

Jika terjadi kesalahan saat memuat DLL performa Anda, menemukan fungsi Anda, atau memanggil fungsi Anda, sistem akan menonaktifkan penyedia untuk koleksi berikutnya dalam proses yang sama. Selain itu, jika ini terjadi saat berjalan dalam proses istimewa, sistem menambahkan nilai Disable Performance Counters ke kunci Performa Anda untuk mencegah penyedia dimuat di masa mendatang.

Untuk informasi selengkapnya tentang menulis DLL performa, lihat topik berikut ini: