Fungsi WdfWmiProviderCreate (wdfwmi.h)

[Berlaku untuk KMDF saja]

Metode WdfWmiProviderCreate membuat objek penyedia WMI yang mewakili blok data WMI.

Sintaks

NTSTATUS WdfWmiProviderCreate(
  [in]           WDFDEVICE                Device,
  [in]           PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   ProviderAttributes,
  [out]          WDFWMIPROVIDER           *WmiProvider
);

Parameter

[in] Device

Handel ke objek perangkat kerangka kerja yang akan menjadi objek induk objek penyedia baru. Objek perangkat tidak dapat menjadi objek perangkat kontrol.

[in] WmiProviderConfig

Penunjuk ke struktur WDF_WMI_PROVIDER_CONFIG yang diinisialisasi pemanggil yang berisi informasi konfigurasi tentang blok data WMI.

[in, optional] ProviderAttributes

Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang dialokasikan penelepon yang berisi atribut objek yang disediakan driver untuk objek penyedia WMI baru. (Anggota ParentObject struktur harus NULL.) Parameter ini bersifat opsional dan dapat WDF_NO_OBJECT_ATTRIBUTES.

[out] WmiProvider

Penunjuk ke lokasi yang menerima handel ke objek penyedia WMI baru.

Nilai kembali

WdfWmiProviderCreate mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_INVALID_PARAMETER
Parameter yang tidak valid terdeteksi.
STATUS_INFO_LENGTH_MISMATCH
Ukuran struktur WDF_WMI_PROVIDER_CONFIG yang ditujukan parameter WmiProviderConfig salah.
STATUS_INSUFFICIENT_RESOURCES
Memori tidak cukup untuk menyelesaikan operasi.
STATUS_OBJECT_NAME_EXISTS
Driver telah memanggil WdfWmiProviderCreate untuk perangkat yang ditentukan dan blok data WMI.
 

Untuk daftar nilai pengembalian lain yang mungkin dikembalikan oleh metode WdfWmiProviderCreate , lihat Kesalahan Pembuatan Objek Kerangka Kerja.

Metode ini juga mungkin mengembalikan nilai NTSTATUS lainnya.

Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.

Keterangan

Driver Anda harus memanggil WdfWmiProviderCreate untuk membuat objek penyedia WMI jika driver akan membuat beberapa instans penyedia. Jika driver hanya akan membuat satu instans penyedia, driver dapat memanggil WdfWmiInstanceCreate tanpa terlebih dahulu memanggil WdfWmiProviderCreate.

Driver dapat memanggil WdfWmiProviderCreate kapan saja, tetapi driver biasanya memanggil WdfWmiProviderCreate dari dalam fungsi panggilan balik EvtDriverDeviceAdd mereka.

Induk dari setiap objek penyedia WMI adalah objek perangkat kerangka kerja perangkat. Driver tidak dapat mengubah induk ini, dan anggota ParentObject atau struktur WDF_OBJECT_ATTRIBUTES harus NULL.

Setelah driver memanggil WdfWmiProviderCreate, driver dapat memanggil WdfWmiProviderGetDevice untuk mengambil handel ke objek perangkat induk objek penyedia.

Setelah driver membuat objek penyedia WMI, driver tidak dapat menghapus objek. Kerangka kerja menghapus objek penyedia WMI perangkat saat menghapus objek perangkat kerangka kerja yang mewakili perangkat. Objek penyedia WMI menggunakan sumber daya sistem minimal.

Untuk informasi selengkapnya tentang metode WdfWmiProviderCreate , lihat Mendukung WMI di driver Framework-Based.

Contoh

Contoh kode berikut menginisialisasi struktur WDF_WMI_PROVIDER_CONFIG dan memanggil WdfWmiProviderCreate.

WDF_WMI_PROVIDER_CONFIG config;
WDFWMIPROVIDER provider;
GUID providerGuid = MY_WMI_DATA_BLOCK_GUID;
NTSTATUS status;

WDF_WMI_PROVIDER_CONFIG_INIT(
                             &config,
                             providerGuid
                             );
config.Flags = WdfWmiProviderTracing;
config.EvtWmiProviderFunctionControl = MyProviderFunctionControl;

status = WdfWmiProviderCreate(
                              Device,
                              &config,
                              WDF_NO_OBJECT_ATTRIBUTES,
                              &provider
                              );

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Header wdfwmi.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.)
IRQL <=DISPATCH_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Lihat juga

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_WMI_PROVIDER_CONFIG

WdfWmiInstanceBuat

WdfWmiProviderGetDevice