Partager via


WdfWmiProviderCreate, fonction (wdfwmi.h)

[S’applique à KMDF uniquement]

La méthode WdfWmiProviderCreate crée un objet de fournisseur WMI qui représente un bloc de données WMI.

Syntaxe

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

Paramètres

[in] Device

Handle d’un objet d’appareil framework qui sera l’objet parent du nouvel objet fournisseur. L’objet device ne peut pas être un objet de périphérique de contrôle.

[in] WmiProviderConfig

Pointeur vers une structure de WDF_WMI_PROVIDER_CONFIG initialisée par l’appelant qui contient des informations de configuration sur le bloc de données WMI.

[in, optional] ProviderAttributes

Pointeur vers une structure de WDF_OBJECT_ATTRIBUTES allouée par l’appelant qui contient les attributs d’objet fournis par le pilote pour le nouvel objet fournisseur WMI. (Le membre ParentObject de la structure doit être NULL.) Ce paramètre est facultatif et peut être WDF_NO_OBJECT_ATTRIBUTES.

[out] WmiProvider

Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet de fournisseur WMI.

Valeur retournée

WdfWmiProviderCreate retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :

Code de retour Description
STATUS_INVALID_PARAMETER
Un paramètre non valide a été détecté.
STATUS_INFO_LENGTH_MISMATCH
La taille de la structure WDF_WMI_PROVIDER_CONFIG pointée par le paramètre WmiProviderConfig était incorrecte.
STATUS_INSUFFICIENT_RESOURCES
La mémoire était insuffisante pour terminer l’opération.
STATUS_OBJECT_NAME_EXISTS
Le pilote a déjà appelé WdfWmiProviderCreate pour le bloc de données WMI et l’appareil spécifiés.
 

Pour obtenir la liste des autres valeurs de retour que la méthode WdfWmiProviderCreate peut retourner, consultez Erreurs de création d’objets framework.

Cette méthode peut également retourner d’autres valeurs NTSTATUS.

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

Votre pilote doit appeler WdfWmiProviderCreate pour créer un objet de fournisseur WMI si le pilote crée plusieurs instances du fournisseur. Si le pilote ne crée qu’une seule instance du fournisseur, il peut appeler WdfWmiInstanceCreate sans appeler WdfWmiProviderCreate au préalable.

Un pilote peut appeler WdfWmiProviderCreate à tout moment, mais les pilotes appellent généralement WdfWmiProviderCreate à partir de leurs fonctions de rappel EvtDriverDeviceAdd .

Le parent de chaque objet de fournisseur WMI est l’objet d’appareil d’infrastructure de l’appareil. Le pilote ne peut pas modifier ce parent, et le membre ParentObject ou la structure WDF_OBJECT_ATTRIBUTES doit avoir la valeur NULL.

Après qu’un pilote a appelé WdfWmiProviderCreate, il peut appeler WdfWmiProviderGetDevice pour récupérer un handle vers l’objet de périphérique parent de l’objet fournisseur.

Une fois qu’un pilote a créé un objet de fournisseur WMI, le pilote ne peut pas supprimer l’objet . L’infrastructure supprime les objets du fournisseur WMI d’un appareil lorsqu’elle supprime l’objet d’appareil d’infrastructure qui représente l’appareil. Les objets du fournisseur WMI utilisent des ressources système minimales.

Pour plus d’informations sur la méthode WdfWmiProviderCreate , consultez Prise en charge de WMI dans les pilotes Framework-Based.

Exemples

L’exemple de code suivant initialise une structure WDF_WMI_PROVIDER_CONFIG et appelle 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
                              );

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
En-tête wdfwmi.h (inclure Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion des versions de la bibliothèque d’infrastructure).)
IRQL <=DISPATCH_LEVEL
Règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Voir aussi

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_WMI_PROVIDER_CONFIG

WdfWmiInstanceCreate

WdfWmiProviderGetDevice