Menyediakan Data ke WMI
WMI menyediakan data tentang objek Windows yang dapat dikelola melalui penyedia WMI . Penyedia mengambil data dari komponen sistem, seperti proses, atau aplikasi berinstrumentasi, seperti SNMP atau IIS, dan meneruskan data tersebut melalui WMI ke aplikasi manajemen. Misalnya, ketika aplikasi atau skrip meminta informasi proses menggunakan kelas WMI Win32_Process, data diperoleh secara dinamis melalui penyedia yang telah diinstal sebelumnya.
Bagian berikut dibahas dalam topik ini:
- Membuat Model untuk Objek yang Dapat Dikelola
- Menerapkan Model untuk Objek yang Dapat Dikelola
- Menentukan Jenis Penyedia untuk Menerapkan
- Menentukan Model Hosting (Implementasi) untuk Penyedia
- Menerapkan Penyedia
- Mendaftarkan Penyedia dengan WMI dan Sistem
- Menguji Penyedia
- Topik terkait
Membuat Model untuk Objek yang Dapat Dikelola
Sebelum mengembangkan penyedia, buat model data untuk mewakili objek yang dapat dikelola untuk diekspos melalui WMI. Anda merencanakan objek data mana yang akan diekspos penyedia Anda. Misalnya, jika Anda berencana untuk mengelola resolusi layar latar belakang desktop, Anda harus memutuskan cara memodelkan Desktop dalam file Managed Object Format (MOF).
Untuk membuat model yang berguna:
- Tentukan skenario dunia nyata dan model informasi yang mungkin ingin dibaca dan diperbarui pelanggan (misalnya, mengubah gambar latar belakang) untuk setiap objek yang dapat dikelola. Ini adalah properti kelas Anda.
- Tentukan jenis tindakan mana yang mungkin ingin dilakukan pelanggan dengan setiap objek yang dapat dikelola. Ini adalah metode Anda.
Menerapkan Model untuk Objek yang Dapat Dikelola
Untuk mengimplementasikan model untuk objek yang dapat dikelola, buat file MOF yang berisi kelas WMI yang mewakili setiap objek. Untuk informasi selengkapnya tentang membuat file MOF untuk menentukan kelas WMI, lihat Merancang Kelas Format Objek Terkelola (MOF). Pendaftaran penyedia dan kelasnya biasanya disertakan dalam file MOF, meskipun dimungkinkan untuk menggunakan COM API untuk membuat kelas dan metode. Untuk informasi selengkapnya, lihat Mengembangkan Penyedia WMI.
Nota
Untuk memastikan bahwa semua definisi kelas WMI Anda untuk objek terkelola dipulihkan ke repositori WMI jika WMI mengalami kegagalan dan menghidupkan ulang, gunakan instruksi #pragma autorecover preprocessor dalam fileManaged Object Format (MOF) Anda.
Setelah Anda membuat file MOF, kompilasi menggunakan alat Mofcomp.exe. Ini memberi tahu Anda tentang kesalahan dalam file MOF Anda, dan menambahkan kelas WMI yang ditentukan dalam file MOF kerepositori WMIsehingga kelas dapat digunakan oleh penyedia.
Menentukan Jenis Penyedia untuk Diimplementasikan
WMI mendukung sejumlah jenis penyedia, yang menentukan sifat informasi yang dikirimkan dan operasi yang didukung oleh penyedia.
Jenis penyedia adalah:
- Penyedia Instans
- penyedia metode
- Penyedia Properti
- Penyedia kelas
- Penyedia peristiwa
- penyedia konsumen Peristiwa
- penyedia Asosiasi
Sebagian besar penyedia adalah penyedia instans dan penyedia metode. Penyedia instans adalah penyedia yang paling umum, dan menyediakan instans kelas tertentu. Penyedia metode mengimplementasikan metode dari satu atau beberapa kelas. Untuk informasi selengkapnya tentang jenis penyedia, lihat Mengembangkan Penyedia WMI.
Menentukan Model Hosting (Implementasi) untuk Penyedia
Penyedia WMI adalah biner yang diimplementasikan sebagai objek COM. Ini berarti bahwa setiap penyedia memiliki file DLL yang dapat dijalankan dalam proses dan konteks keamanan tertentu. Inilah yang disebut WMI sebagai model hosting . WMI menawarkan berbagai cara untuk menghosting penyedia, tetapi pendekatan yang paling umum adalah menggunakan model penyedia yang digabungkan (berjalan di bawah proses WMI) dalam konteks keamanan NetworkServiceHost. Penyedia WMI dapat diklasifikasikan sebagai terhubung atauterpisah.
Istilah penyedia terhubung atau terpisah menentukan di dalam proses host mana penyedia berjalan dalam kaitannya dengan proses WMIPRVSE.EXE yang disediakan oleh WMI. Praktik terbaik adalah menentukan apakah data manajemen yang diekspos penyedia dan API atau aplikasi yang diandalkannya selalu tersedia dalam sistem atau tidak. Jika API atau aplikasi yang diandalkan penyedia selalu tersedia (berjalan pada sistem), maka penyedia harus menjadi penyedia yang digabungkan, jika tidak, itu harus menjadi penyedia yang dipisahkan. Untuk informasi selengkapnya tentang model hosting, lihat Hosting dan Keamanan Penyedia.
Untuk informasi selengkapnya tentang membuat penyedia yang digabungkan, lihat Memasok Data ke WMI dengan Menulis penyedia, dan untuk informasi tentang menggabungkan penyedia yang dipisahkan dalam aplikasi, lihat Menggabungkan Penyedia dalam Aplikasi.
Penyedia yang digabungkan dapat digambarkan sebagai dalam proses (dalam proc) atau di luar proses (di luar proc). Ketika penyedia yang dipasangkan adalah penyedia in-proc, ia berjalan dalam proses hosting WMI bersama WMIPRVSE.EXE dan diimplementasikan sebagai server in-proc COM (.dll). Ketika penyedia adalah penyedia out-of-proc, itu dimulai oleh WMI atas permintaan klien atau peristiwa, tetapi berjalan sebagai proses terpisah dan diimplementasikan sebagai yang dapat dieksekusi (.exe).
Menerapkan Penyedia
Penyedia dapat diimplementasikan dengan cara berikut:
Menggunakan Wizard ATL di Visual Studio.
Wizard ATL menghasilkan kode penyedia yang mengimplementasikan penyedia yang digabungkan. Saat menggunakan Wizard ATL, Anda dapat menentukan bahwa Anda ingin membuat model waktu-eksekusi penyedia in-proc (.dll) atau out-of-proc (.exe).
Menentukan objek COM untuk menampung penyedia Anda.
Kode penyedia ditulis dalam C++. Untuk informasi selengkapnya, lihat Menyediakan Data ke WMI dengan Menulis Penyedia.
Menggunakan kelas di namespace Microsoft.Management.Infrastructure di .NET Framework untuk membuat penyedia menggunakan kode terkelola. (Namespace System.Management.Instrumentation tidak lagi didukung.)
Proses ini membuat penyedia yang dipisahkan.
Mendaftarkan Penyedia dengan WMI dan Sistem
Sebelum menggunakan penyedia dari konsumen, penting untuk mendaftarkannya dengan sistem WMI dan subsistem Windows COM.
File MOF dapat berisi beberapa jenis penyedia untuk kelas yang sama. Nama penyedia yang sama terdaftar sebagai, misalnya, instans atau penyedia metode. Untuk informasi selengkapnya, lihat Registrasi Penyedia.
Menguji Penyedia
Ketika kode penyedia terdaftar, penting untuk menguji penyedia dengan benar dengan menggunakan penyedia dari konsumen yang berbeda (misalnya, skrip, kode terkelola .NET, dan konsumen C++).
Lakukan tugas berikut untuk menguji penyedia Anda:
- Pastikan penyedia Anda memuat dengan benar dengan melacak pemberitahuan peristiwa MSFT_WmiProvider_OperationEvent. Peristiwa ini akan memberi tahu Anda tentang kegagalan beban penyedia apa pun. Kelas pemecahan masalah lain yang mungkin berguna adalah Win32_ProcessStartTrace dan Win32_ProcessStopTrace. Untuk informasi selengkapnya tentang penyedia pemecahan masalah, lihat Penyedia Penelusuran Kesalahan dan Konfigurasi Penyedia dan Kelas Pemecahan Masalah.
- Jika penyedia adalah instans atau penyedia metode, pastikan Anda menguji setiap kemampuan penyedia satu per satu untuk menghindari kebingungan dalam mengikuti logika kode Anda.
- Untuk penyedia instans, buat aplikasi atau skrip klien yang memanggil setiap antarmuka penyedia (enumerasi, dapatkan, letakkan, dan hapus). Bahkan jika penyedia tidak seharusnya mengimplementasikan apa pun, penyedia harus mengembalikan pesan "tidak didukung". Anda dapat menemukan nilai pengembalian yang sudah ditentukan dalam WMI Return Codes.
- Untuk memastikan bahwa konteks keamanan yang diinginkan berfungsi seperti yang direncanakan, panggil operasi yang didukung penyedia dari konteks keamanan nonadministrator. Penyedia harus mendukung peniruan identitas. Jika pengguna yang tidak memiliki kredensial keamanan yang benar mencoba memperbarui data atau melakukan operasi yang menjalankan metode, penyedia Anda harus menolak akses dengan pesan kesalahan yang sesuai.
- Untuk informasi selengkapnya tentang keamanan penyedia, lihat Mengamankan penyedia Anda.
Topik terkait
-
Mengembangkan Penyedia WMI
-
Mendaftarkan Penyedia
-
Pemecahan Masalah Aplikasi Klien WMI