Menyediakan Data ke WMI

WMI membuat data tentang objek yang dapat dikelola Windows tersedia 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

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 Mendesain 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.

Catatan

Untuk memastikan bahwa semua definisi kelas WMI Anda untuk objek terkelola dipulihkan ke repositori WMI jika WMI mengalami kegagalan dan menghidupkan ulang, gunakan instruksi pra-prosesor pemulihan otomatis #pragma dalam file Managed 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 ke repositori WMI sehingga kelas dapat digunakan oleh penyedia.

Menentukan Jenis Penyedia yang Akan Diterapkan

WMI mendukung sejumlah jenis penyedia, yang menentukan sifat informasi yang dikirimkan dan operasi yang didukung oleh penyedia.

Jenis penyedianya adalah:

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 digabungkan atau diputuskan.

Istilah penyedia yang digabungkan atau diputuskan menentukan di mana proses host yang dijalankan penyedia sehubungan dengan proses WMIPRVSE.EXE yang disediakan 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 diputuskan. Untuk informasi selengkapnya tentang model hosting, lihat Hosting dan Keamanan Penyedia.

Untuk informasi selengkapnya tentang membuat penyedia yang digabungkan, lihat Menyediakan 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 in-process (in-proc) atau out-of-process (out-of-proc). Ketika penyedia yang digabungkan adalah penyedia in-proc, ia berjalan di bawah proses hosting WMIPRVSE.EXE WMI bersama 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 run-time penyedia in-proc (.dll) atau out-of-proc (.exe).

  • Menentukan objek COM untuk memuat 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 diputuskan.

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 Mendaftarkan 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 pemuatan 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 Kode Pengembalian WMI.
  • 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.

Mengembangkan Penyedia WMI

Hosting dan Keamanan Penyedia

Menyediakan Data ke WMI dengan Menulis Penyedia

Menggabungkan Penyedia dalam Aplikasi

Mendaftarkan Penyedia

Pemecahan masalah Aplikasi Klien WMI

Mengamankan Penyedia Anda

Mendapatkan dan Menyediakan Data pada Platform 64-bit