Bagikan melalui


Mendaftarkan Penyedia Kelas

Untuk membuat penyedia kelas WMI, Anda harus mendaftarkan instans __Win32Provider yang mewakili penyedia Anda menggunakan instans __ClassProviderRegistration. Sebagai objek COM, penyedia Anda harus mendaftar dengan sistem operasi dan WMI. Prosedur berikut mengasumsikan bahwa Anda telah menerapkan proses pendaftaran seperti yang dijelaskan dalam Mendaftarkan Penyedia. Jika penyedia Anda menyimpan sebagian besar data di repositori WMI dan data tersebut hanya diperbarui pada inisialisasi WMI, maka daftarkan kelas Anda sebagai penyedia kelas pendorongan. Jika data yang Sering Anda berikan perubahan dan diambil secara dinamis oleh kode Anda pada setiap permintaan dari WMI, maka daftarkan penyedia Anda sebagai penyedia kelas pull.

Prosedur berikut menjelaskan cara mendaftarkan penyedia kelas pendorongan.

Untuk mendaftarkan penyedia kelas pendorongan

Prosedur berikut menjelaskan cara mendaftarkan penyedia kelas penarikan.

Untuk mendaftarkan penyedia kelas penarikan

  1. Buat instans kelas __Win32Provider yang menjelaskan penyedia.

  2. Buat instans kelas __ClassProviderRegistration yang menjelaskan kumpulan fitur penyedia.

    Dalam instans __ClassProviderRegistration :

    1. Atur properti InteractionType untuk menunjukkan apakah penyedia adalah penyedia pendorongan atau penarikan.

    2. Tandai kelas dengan kualifikasi Dinamis dan Penyedia .

      Kualifikasi dinamis menandakan bahwa WMI harus menggunakan penyedia untuk mengambil instans kelas. Kualifikasi Penyedia menentukan nama penyedia yang harus digunakan WMI.

    3. Tentukan properti ResultSetQueries, ReferencedSetQueries, dan UnsupportedQueries .

      Properti kueri ini menjelaskan informasi terperinci tentang kelas yang didukung.

Selain menjelaskan berbagai metode kelas yang didukung, kelas __ClassProviderRegistration juga memiliki tiga properti yang menjelaskan serangkaian kueri. Ketika digunakan bersama-sama, ketiga properti ini menjelaskan seluruh rentang kelas yang disediakan oleh penyedia kelas. Setiap properti kueri berisi pernyataan WQL SELECT, yang disebut "kueri skema," untuk menentukan jenis kelas yang didukung. Kueri skema menentukan nama kelas khusus yang disebut meta_class. Tabel berikut ini mencantumkan properti kueri.

Properti Deskripsi
ResultSetQueries Berisi informasi tentang kumpulan hasil yang disediakan penyedia. WMI menggunakan informasi untuk menentukan apakah akan memanggil penyedia untuk memenuhi kueri dari aplikasi. Properti ini menjelaskan sekumpulan semua kelas yang dapat disediakan penyedia atau superset dari kelas yang tersedia, tetapi tidak pernah menjadi subset. WMI mengharuskan penyedia untuk menentukan setidaknya satu kueri dalam properti ini.
Contoh berikut menunjukkan cara mengatur ResultSetQueries saat penyedia menyediakan kelas asosiasi yang mereferensikan kelas Win32_LogicalDisk .
SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk"
Contoh berikut menunjukkan cara menentukan kueri umum saat penyedia menyediakan kelas yang mereferensikan kelas lain yang tidak diketahui.
SELECT * FROM meta_class
Contoh berikut menunjukkan cara mengatur ResultSetQueries saat penyedia hanya menyediakan subkelas, tetapi bukan kelas induk dari kelas tertentu.
SELECT * FROM meta_class WHERE __Dynasty = "MyClass"
Contoh berikut menunjukkan cara menggunakan properti __this khusus dan mengatur ResultSetQueries saat penyedia menyediakan semua kelas dan subkelas.
SELECT * FROM meta_class WHERE __this ISA "MyClass"
ReferencedSetQueries Menentukan apakah akan melewati penyedia dalam kueri skema tempat asosiasi dan referensi diminta. Penyedia yang dapat menyediakan kelas asosiasi harus menyertakan setidaknya satu kueri dalam properti ReferencedSetQueries mereka.
Kueri yang Tidak Didukung Berisi informasi tentang tataan hasil yang tidak disediakan penyedia kelas. WMI menggunakan properti ini untuk mengurangi dari kumpulan kelas yang disiratkan oleh ResultSetQueries. Misalnya, penyedia kelas dapat menentukan dalam dukungan ResultSetQueries untuk semua kelas yang berasal dari MyClass dan menentukan di UnsupportedQueries kurangnya dukungan untuk satu kelas turunan tertentu.
Semakin banyak informasi bahwa penyedia dapat mendaftar tentang kemampuan pemrosesan kuerinya, semakin cepat dijalankannya. Memasukkan satu atau beberapa kueri di properti UnsupportedQueries adalah salah satu cara untuk menjadi spesifik dan sangat penting ketika penyedia bergantung pada kelas yang tidak disediakannya. Saat permintaan dibuat untuk kelas yang tercantum dalam kueri di properti UnsupportedQueries , WMI dapat menyediakan kelas itu sendiri atau memanggil penyedia alternatif untuk menyediakannya.

Karena WMI tidak mendukung klausul OR, Anda harus membuat kueri terpisah untuk setiap kelas.

Kueri berikut ditentukan dalam ResultSetQueries saat penyedia kelas menyediakan MyClass1, MyClass2, dan MyClass3.

SELECT * FROM meta_class WHERE __Class = "MyClass1"
SELECT * FROM meta_class WHERE __Class = "MyClass2"
SELECT * FROM meta_class WHERE __Class = "MyClass3"

Hanya administrator yang dapat mendaftarkan atau menghapus penyedia dengan membuat instans __Win32Provider dan __ClassProviderRegistration.