Inicializar um provedor

Uma das primeiras tarefas que você deve codificar para um provedor é o processo de inicialização, que abrange todas as tarefas que o provedor deve executar, permitindo que ele envie e receba informações do WMI, controle um objeto gerenciado e execute outras tarefas. Cada tipo de provedor tem um conjunto diferente de tarefas que precisa executar e um conjunto de interfaces exclusivas.

No entanto, todos os provedores são inicializados por meio da interface IWbemProviderInit e informam o WMI de seu status de inicialização por meio da interface IWbemProviderInitSink.

O procedimento a seguir descreve como inicializar um provedor.

Para inicializar um provedor

  1. Implemente IWbemProviderInit::Initialize para o provedor.

    Quando determina que um cliente requer os serviços de um provedor, o WMI carrega o provedor chamando o método IWbemProviderInit::Initialize.

  2. Implemente qualquer interface exclusiva para o seu tipo de provedor.

  3. Informe ao WMI que o provedor terminou a inicialização chamando IWbemProviderInitSink::SetStatus.

    Todas as implementações de IWbemProviderInit::Initialize devem chamar IWbemProviderInitSink::SetStatus para relatar o status de inicialização para o WMI. O método SetStatus permite que o WMI determine se um provedor está pronto para receber solicitações e o tipo de solicitações que ele está pronto para receber.

O procedimento a seguir descreve como relatar uma inicialização bem-sucedida.

Para relatar uma inicialização bem-sucedida

  • Defina o parâmetro IStatus de SetStatus como WBEM_S_INITIALIZED.

    Ao retornar WBEM_S_INITIALIZED, um provedor indica uma preparação para lidar com solicitações de aplicativos, o WMI e outros provedores. Depois de receber WBEM_S_INITIALIZED, o WMI faz uma chamada para o método IWbemProviderInit::QueryInterface no provedor. Essa consulta recupera um ponteiro para a interface primária do provedor.

O procedimento a seguir descreve como relatar um erro durante a inicialização.

Para relatar um erro durante a inicialização

  • Defina o parâmetro IStatus de SetStatus como WBEM_E_FAILED. O WMI exibe provedores que retornam WBEM_E_FAILED como não funcional.

    O WMI libera o ponteiro IWbemProviderInit após obter um ponteiro para a interface primária do provedor ou após a falha na inicialização.

Desenvolver um provedor do WMI

Definir descritores de segurança de namespace

Como proteger seu provedor