Partilhar via


Função IoWMIRegistrationControl (wdm.h)

O 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, em seguida, registrar (registrar novamente) o driver. O reregistro do driver resulta no envio de uma solicitação de IRP_MN_REGINFO ou IRP_MN_REGINFO_EX para o 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.

Valor de retorno

IoWMIRegistrationControl retorna um código de 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 Action, 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.

Observações

Depois que um driver chama IoWMIRegistrationControl, o WMI envia ao driver uma solicitação IRP_MN_REGINFO ou IRP_MN_REGINFO_EX para que o driver possa fornecer informações ao WMI. Para obter mais informações, consulte Registring as a WMI Data Provider.

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 IRP_MN_SURPRISE_REMOVAL, o driver deverá chamar IoWMIRegistrationControl e especificar WMIREG_ACTION_DEREGISTER no Action 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
de cliente com suporte mínimo Disponível a partir do Windows 2000.
da Plataforma de Destino Universal
cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), LowerDriverReturn(wdm), PowerIrpDDis(wdm)

Consulte também

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

IRP_MN_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL