Función IoWMIRegistrationControl (wdm.h)

La rutina IoWMIRegistrationControl registra o anula el registro del autor de la llamada como proveedor de datos WMI para un objeto de dispositivo especificado.

Sintaxis

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

Parámetros

[in] DeviceObject

Puntero a un objeto de dispositivo. Este objeto es una estructura del sistema DEVICE_OBJECT .

[in] Action

La acción que debe realizar WMI. La acción solicitada se indica mediante uno de los valores siguientes.

Valor de acción Significado
WMIREG_ACTION_REGISTER Especifica que WMI debe registrar el autor de la llamada como proveedor WMI para DeviceObject. Esto provocará que WMI envíe un IRP_MN_REGINFO o IRP_MN_REGINFO_EX solicitud al controlador.
WMIREG_ACTION_DEREGISTER Especifica que WMI debe quitar el autor de la llamada de su lista de proveedores WMI para DeviceObject.
WMIREG_ACTION_REREGISTER Especifica que WMI debe anular el registro del controlador y, a continuación, registrar (volver a registrar) el controlador. Al volver a registrar el controlador, WMI envía una solicitud de IRP_MN_REGINFO o IRP_MN_REGINFO_EX al controlador.
WMIREG_ACTION_UPDATE_GUIDS Especifica que WMI debe volver a consultar el controlador para obtener una nueva lista de identificadores GUID para los que proporciona datos. Esto provocará que WMI envíe un IRP_MN_REGINFO o IRP_MN_REGINFO_EX solicitud al controlador.

Valor devuelto

IoWMIRegistrationControl devuelve un código de estado de la lista siguiente:

Código devuelto Descripción
STATUS_SUCCESS
Indica que WMI completó la acción solicitada sin error.
STATUS_INVALID_PARAMETER
Indica que la acción, especificada en Action, no era válida.
STATUS_XXX
Indica que se produjo un error en la solicitud por el motivo especificado por el valor NTSTATUS. Consulte Ntstatus.h para obtener información detallada sobre el código de retorno de estado real.

Comentarios

Una vez que un controlador llama a IoWMIRegistrationControl, WMI envía al controlador una solicitud de IRP_MN_REGINFO o IRP_MN_REGINFO_EX para que el controlador pueda proporcionar información a WMI. Para obtener más información, vea Registro como proveedor de datos WMI.

Si el autor de la llamada especifica WMIREG_ACTION_DEREGISTER para Action, IoWMIRegistrationControl hace que el subproceso que realiza la llamada se bloquee hasta que se hayan completado todas las solicitudes IRP_MJ_SYSTEM_CONTROL que se enviaron anteriormente al objeto de dispositivo especificado. En tal caso, si un controlador llama a IoWMIRegistrationControl dentro de una rutina de envío para una solicitud de IRP_MJ_SYSTEM_CONTROL , el subproceso que realiza la llamada interbloqueo.

Si un dispositivo se quita repentinamente (por ejemplo, en una eliminación sorpresa), lo que hace que el administrador de PnP envíe una IRP_MN_SURPRISE_REMOVAL IRP, el controlador debe llamar a IoWMIRegistrationControl y especificar WMIREG_ACTION_DEREGISTER en Acción en la llamada. Tenga en cuenta que si el controlador llama a IoWMIRegistrationControl con Action establecido en WMIREG_ACTION_DEREGISTER en respuesta a un IRP de IRP_MN_SURPRISE_REMOVAL , el controlador no debe realizar la misma llamada a IoWMIRegistrationControl en respuesta a un IRP de IRP_MN_REMOVE_DEVICE .

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 2000.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), LowerDriverReturn(wdm), PowerIrpDDis(wdm)

Consulte también

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

IRP_MN_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL