Fonction IoWMIRegistrationControl (wdm.h)

La routine IoWMIRegistrationControl inscrit ou annule l’inscription de l’appelant en tant que fournisseur de données WMI pour un objet d’appareil spécifié.

Syntaxe

NTSTATUS IoWMIRegistrationControl(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] ULONG          Action
);

Paramètres

[in] DeviceObject

Pointeur vers un objet d’appareil. Cet objet est une structure système DEVICE_OBJECT .

[in] Action

Action que WMI doit effectuer. L’action demandée est indiquée par l’une des valeurs suivantes.

Valeur de l’action Signification
WMIREG_ACTION_REGISTER Spécifie que WMI doit inscrire l’appelant en tant que fournisseur WMI pour DeviceObject. WMI envoie alors une requête IRP_MN_REGINFO ou IRP_MN_REGINFO_EX au pilote.
WMIREG_ACTION_DEREGISTER Spécifie que WMI doit supprimer l’appelant de sa liste de fournisseurs WMI pour DeviceObject.
WMIREG_ACTION_REREGISTER Spécifie que WMI doit annuler l’inscription du pilote, puis inscrire (réinscrire) le pilote. La réinscrire le pilote entraîne l’envoi par WMI d’une requête IRP_MN_REGINFO ou IRP_MN_REGINFO_EX au pilote.
WMIREG_ACTION_UPDATE_GUIDS Spécifie que WMI doit interroger à nouveau le pilote pour obtenir une nouvelle liste d’identificateurs GUID pour 1000. WMI envoie alors une requête IRP_MN_REGINFO ou IRP_MN_REGINFO_EX au pilote.

Valeur retournée

IoWMIRegistrationControl retourne un code status de la liste suivante :

Code de retour Description
STATUS_SUCCESS
Indique que WMI a terminé l’action demandée sans erreur.
STATUS_INVALID_PARAMETER
Indique que l’action, spécifiée dans Action, n’était pas valide.
STATUS_XXX
Indique que la demande a échoué pour la raison spécifiée par la valeur NTSTATUS. Consultez Ntstatus.h pour obtenir des informations détaillées sur le code de retour status réel.

Remarques

Une fois qu’un pilote a appelé IoWMIRegistrationControl, WMI envoie au pilote une requête IRP_MN_REGINFO ou IRP_MN_REGINFO_EX afin que le pilote puisse fournir des informations à WMI. Pour plus d’informations, consultez Inscription en tant que fournisseur de données WMI.

Si l’appelant spécifie WMIREG_ACTION_DEREGISTER pour Action, IoWMIRegistrationControl bloque le thread appelant jusqu’à ce que toutes les demandes IRP_MJ_SYSTEM_CONTROL précédemment envoyées à l’objet d’appareil spécifié soient terminées. Dans ce cas, si un pilote appelle IoWMIRegistrationControl au sein d’une routine de répartition pour une demande de IRP_MJ_SYSTEM_CONTROL , le thread appelant interblocage.

Si un appareil est supprimé soudainement (par exemple, lors d’une suppression surprise), entraînant l’envoi par le gestionnaire PnP d’un IRP_MN_SURPRISE_REMOVAL IRP, le pilote doit appeler IoWMIRegistrationControl et spécifier WMIREG_ACTION_DEREGISTER dans Action dans l’appel. Notez que si le pilote appelle IoWMIRegistrationControl avec Action définie sur WMIREG_ACTION_DEREGISTER en réponse à un IRP IRP_MN_SURPRISE_REMOVAL , le pilote ne doit pas effectuer le même appel à IoWMIRegistrationControl en réponse à une IRP IRP_MN_REMOVE_DEVICE .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), LowerDriverReturn(wdm), PowerIrpDDis(wdm)

Voir aussi

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

IRP_MN_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL