Compartilhar via


Atualizando informações de registro do WMI

Após o registro inicial com o WMI, um driver altera suas informações de registro chamando IoWMIRegistrationControl com uma das seguintes ações:

  • WMIREG_ACTION_REREGISTER substituir todas as informações de registro fornecidas anteriormente pelo driver por novas informações.

    Em resposta, o WMI envia uma solicitação IRP_MN_REGINFO ou uma solicitação IRP_MN_REGINFO_EX para o driver, com Parameters.WMI.DataPath definido como WMIREGISTER. (No Windows 98 e no Windows 2000, o sistema envia a solicitação IRP_MN_REGINFO . No Windows XP e posterior, o sistema envia a solicitação IRP_MN_REGINFO_EX .)

    O driver fornece à WMI novas informações de registro para todos os blocos compatíveis, conforme descrito em Usando a biblioteca WMI para registrar blocos e manipulando IRP_MN_REGINFO e IRP_MN_REGINFO_EX para registrar blocos.

  • WMIREG_ACTION_UPDATE_GUIDS adicionar ou remover o suporte para blocos ou alterar os nomes de instância estática dos blocos registrados.

    Em resposta, o WMI envia uma solicitação IRP_MN_REGINFO ou IRP_MN_REGINFO_EX para o driver, com Parameters.Wmi.DataPath definido como WMIUPDATE.

    O driver fornece ao WMI informações de registro atualizadas nas quais:

    • O driver define WMIREG_FLAG_REMOVE_GUID para remover o suporte para esse bloco.

    • O driver limpa WMIREG_FLAG_REMOVE_GUID para adicionar um novo bloco ou atualizar um bloco existente.

    • O driver define ou limpa WMIREG_FLAG_INSTANCE_XXX e fornece todas as informações de nome de instância necessárias para alterar os nomes de instância estática de um bloco ou alterá-los para usar nomes de instância dinâmica.

  • WMIREG_ACTION_DEREGISTER para instruir a WMI de que o driver não fornecerá mais informações de WMI.

    O WMI não envia uma solicitação de IRP_MN_REGINFO ou IRP_MN_REGINFO_EX em resposta a essa chamada, pois não requer mais informações do driver. Um driver normalmente desregistre seus blocos em resposta a uma solicitação de IRP_MN_REMOVE_DEVICE . Observe que a chamada de desregistro será bloqueada até que todos os IRPs WMI para o dispositivo sejam concluídos. Se um driver enfileirar IRPs WMI, ele deverá cancelá-los antes de chamar IoWMIRegistrationControl para desregister.