Compartir a través de


Función IoWMIRegistrationControl (wdm.h)

El IoWMIRegistrationControl rutina 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

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

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 una solicitud de IRP_MN_REGINFO o IRP_MN_REGINFO_EX 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 una solicitud de IRP_MN_REGINFO o IRP_MN_REGINFO_EX 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 Acción, 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.

Observaciones

Después de que un controlador llame 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 Registrar como proveedor de datos WMI.

Si el autor de la llamada especifica WMIREG_ACTION_DEREGISTER para Action, IoWMIRegistrationControl hace que el subproceso de llamada se bloquee hasta que se hayan completado todas las solicitudes IRP_MJ_SYSTEM_CONTROL que se enviaron previamente al objeto de dispositivo especificado. En tal caso, si un controlador llama a IoWMIRegistrationControl dentro de una rutina de distribución para una solicitud de IRP_MJ_SYSTEM_CONTROL, el subproceso de llamada se interbloqueará.

Si un dispositivo se quita repentinamente (por ejemplo, en una eliminación sorpresa), lo que provoca que el administrador de PnP envíe un IRP de IRP_MN_SURPRISE_REMOVAL, 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 Valor
cliente mínimo admitido Disponible a partir de Windows 2000.
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(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