Funzione IoWMIRegistrationControl (wdm.h)

Il IoWMIRegistrationControl routine registra o annulla la registrazione del chiamante come provider di dati WMI per un oggetto dispositivo specificato.

Sintassi

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

Parametri

[in] DeviceObject

Puntatore a un oggetto dispositivo. Questo oggetto è una struttura di sistema DEVICE_OBJECT.

[in] Action

Azione che DEVE essere eseguita da WMI. L'azione richiesta è indicata da uno dei valori seguenti.

Valore azione Significato
WMIREG_ACTION_REGISTER Specifica che WMI deve registrare il chiamante come provider WMI per DeviceObject. Ciò comporterà l'invio di un IRP_MN_REGINFO o di una richiesta di IRP_MN_REGINFO_EX al driver.
WMIREG_ACTION_DEREGISTER Specifica che WMI deve rimuovere il chiamante dall'elenco dei provider WMI per DeviceObject.
WMIREG_ACTION_REREGISTER Specifica che WMI deve annullare la registrazione del driver e quindi registrare (registrare nuovamente) il driver. La registrazione del driver comporta l'invio di una richiesta di IRP_MN_REGINFO o IRP_MN_REGINFO_EX al driver in WMI.
WMIREG_ACTION_UPDATE_GUIDS Specifica che WMI deve eseguire nuovamente una query sul driver per un nuovo elenco di identificatori GUID per cui fornisce i dati. Ciò comporterà l'invio di un IRP_MN_REGINFO o di una richiesta di IRP_MN_REGINFO_EX al driver.

Valore restituito

IoWMIRegistrationControl restituisce un codice di stato dall'elenco seguente:

Codice restituito Descrizione
STATUS_SUCCESS
Indica che WMI ha completato l'azione richiesta senza errori.
STATUS_INVALID_PARAMETER
Indica che l'azione, specificata in 'azione, non è valida.
STATUS_XXX
Indica che la richiesta non è riuscita per il motivo specificato dal valore NTSTATUS. Per informazioni dettagliate sul codice restituito di stato effettivo, vedere Ntstatus.h.

Osservazioni

Dopo che un driver chiama IoWMIRegistrationControl, WMI invia al driver una richiesta di IRP_MN_REGINFO o IRP_MN_REGINFO_EX in modo che il driver possa fornire informazioni a WMI. Per altre informazioni, vedere Registrazione come provider di dati WMI.

Se il chiamante specifica WMIREG_ACTION_DEREGISTER per Action, IoWMIRegistrationControl blocca il thread chiamante fino al completamento di tutte le richieste di IRP_MJ_SYSTEM_CONTROL inviate in precedenza all'oggetto dispositivo specificato. In tal caso, se un driver chiama IoWMIRegistrationControl all'interno di una routine dispatch per una richiesta di IRP_MJ_SYSTEM_CONTROL, il thread chiamante verrà deadlock.

Se un dispositivo viene rimosso improvvisamente (ad esempio, in una rimozione a sorpresa), causando l'invio di un IRP_MN_SURPRISE_REMOVAL IRP, il driver deve chiamare IoWMIRegistrationControl e specificare WMIREG_ACTION_DEREGISTER in Action nella chiamata. Si noti che se il driver chiama IoWMIRegistrationControl con Action impostato su WMIREG_ACTION_DEREGISTER in risposta a un IRP IRP_MN_SURPRISE_REMOVAL, il driver non deve effettuare la stessa chiamata a IoWMIRegistrationControl in risposta a un IRP_MN_REMOVE_DEVICE IRP.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 2000.
piattaforma di destinazione Universale
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
regole di conformità DDI HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), LowerDriverReturn(wdm), PowerIrpDDis(wdm)

Vedere anche

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

IRP_MN_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL