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 |
---|---|
|
Indica que o WMI concluiu a ação solicitada sem erros. |
|
Indica que a ação, especificada em Action, era inválida. |
|
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) |