Função IoWMIRegistrationControl (wdm.h)

A rotina IoWMIRegistrationControl registra ou cancela o registro do chamador como um provedor de dados WMI para um objeto de dispositivo especificado.

Sintaxe

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

Parâmetros

[in] DeviceObject

Um ponteiro para um objeto de dispositivo. Esse objeto é uma estrutura do sistema DEVICE_OBJECT .

[in] Action

A ação que o WMI deve executar. A ação solicitada é indicada por um dos valores a seguir.

Valor da ação Significado
WMIREG_ACTION_REGISTER Especifica que o WMI deve registrar o chamador como um provedor WMI para DeviceObject. Isso resultará no envio de uma solicitação de IRP_MN_REGINFO ou IRP_MN_REGINFO_EX para o driver.
WMIREG_ACTION_DEREGISTER Especifica que o WMI deve remover o chamador de sua lista de provedores WMI para DeviceObject.
WMIREG_ACTION_REREGISTER Especifica que o WMI deve cancelar o registro do driver e registrar (registrar novamente) o driver. Registrar novamente o driver resulta no envio de uma solicitação de IRP_MN_REGINFO ou IRP_MN_REGINFO_EX ao driver.
WMIREG_ACTION_UPDATE_GUIDS Especifica que o WMI deve consultar novamente o driver para obter uma nova lista de identificadores GUID para os quais ele fornece dados. Isso resultará no envio de uma solicitação de IRP_MN_REGINFO ou IRP_MN_REGINFO_EX para o driver.

Retornar valor

IoWMIRegistrationControl retorna um código status da seguinte lista:

Código de retorno Descrição
STATUS_SUCCESS
Indica que o WMI concluiu a ação solicitada sem erros.
STATUS_INVALID_PARAMETER
Indica que a ação, especificada em Ação, era inválida.
STATUS_XXX
Indica que a solicitação falhou pelo motivo especificado pelo valor NTSTATUS. Consulte Ntstatus.h para obter informações detalhadas sobre o código de retorno de status real.

Comentários

Depois que um driver chama IoWMIRegistrationControl, o WMI envia ao driver uma solicitação de IRP_MN_REGINFO ou IRP_MN_REGINFO_EX para que o driver possa fornecer informações ao WMI. Para obter mais informações, consulte Registrando-se como um provedor de dados WMI.

Se o chamador especificar WMIREG_ACTION_DEREGISTER para Action, IoWMIRegistrationControl fará com que o thread de chamada seja bloqueado até que todas as solicitações IRP_MJ_SYSTEM_CONTROL que foram enviadas anteriormente para o objeto de dispositivo especificado tenham sido concluídas. Nesse caso, se um driver chamar IoWMIRegistrationControl dentro de uma rotina de expedição para uma solicitação de IRP_MJ_SYSTEM_CONTROL , o thread de chamada será deadlock.

Se um dispositivo for removido repentinamente (por exemplo, em uma remoção surpresa), fazendo com que o gerenciador PnP envie um IRP_MN_SURPRISE_REMOVAL IRP, o driver deverá chamar IoWMIRegistrationControl e especificar WMIREG_ACTION_DEREGISTER em Ação na chamada. Observe que, se o driver chamar IoWMIRegistrationControl com Action definido como WMIREG_ACTION_DEREGISTER em resposta a um IRP IRP_MN_SURPRISE_REMOVAL , o driver não deverá fazer a mesma chamada para IoWMIRegistrationControl em resposta a um IRP IRP_MN_REMOVE_DEVICE .

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), LowerDriverReturn(wdm), PowerIrpDDis(wdm)

Confira também

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

IRP_MN_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL