Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Há duas maneiras de implementar um provedor de classe: implementar a interface como um provedor push ou como um provedor pull.
As seguintes seções são discutidas neste tópico:
- Implementando a interface primária para um provedor de classe push
- Implementando a interface primária para um provedor de classe pull
Implementando a interface primária para um provedor de classe push
Enquanto todos os provedores implementam IWbemProviderInit para inicialização e pelo menos uma outra interface como sua interface principal, um provedor push implementa apenas IWbemProviderInit.
Certifique-se de que sua implementação execute as seguintes tarefas:
- Recupera os dados de classe apropriados.
- Coloca os dados no repositório WMI.
- Exclui dados obsoletos.
Depois de concluir o processo de inicialização, o WMI lida com todas as solicitações de aplicativos para classes pertencentes ao provedor de push sem qualquer interação adicional do provedor. Depois, o provedor de push atua efetivamente como um cliente do WMI em vez de um provedor. Para obter mais informações sobre como implementar IWbemProviderInit, consulte inicializando um provedor.
Observação
Ao chamar o WMI para criar, atualizar ou remover dados em um fornecedor de push, defina o parâmetro lFlags para incluir o sinalizador WBEM_FLAG_OWNER_UPDATE em todas as chamadas para os métodos IWbemServices.
Implementando a interface primária para um provedor de classe pull
Um fornecedor de pull de classe deve implementar IWbemServices como a interface primária. A interface IWbemServices suporta recuperação de dados, atualização de dados, remoção de dados, enumeração e processamento de consultas. No entanto, como IWbemServices também é usado por aplicativos e provedores para solicitar serviços de WMI, IWbemServices contém muitos métodos que são irrelevantes para um provedor de classe. Sua implementação deve oferecer suporte à recuperação de classe e enumeração, por meio dos GetObjectAsync e métodos CreateClassEnumAsync, respectivamente. A tabela a seguir lista os métodos adicionais assíncronos de IWbemServices que se pode implementar para um fornecedor de classes.
Método | Funcionalidade |
---|---|
PutInstanceAsync | Modificação |
DeleteClassAsync | Remoção |
Observação
Como o retorno de chamada para o coletor pode não ser retornado no mesmo nível de autenticação exigido pelo cliente, é recomendável usar comunicação semissíncrona em vez de assíncrona. Para obter mais informações, consulte chamando um método.
Seu provedor de classe deve fornecer uma implementação de stub que retorne WBEM_E_PROVIDER_NOT_CAPABLE para todos os outros métodosIWbemServices que não suportam seu conjunto de recursos. Especificamente, o WMI não oferece suporte ao processamento de consultas para provedores de classe. Como tal, um provedor de classe deve retornar WBEM_E_PROVIDER_NOT_CAPABLE de sua implementação de IWbemServices::ExecQueryAsync, definir seu QuerySupportLevels propriedade de registro para NULLou ambos.
As interfaces que um provedor de classe implementa são muito semelhantes às interfaces para um provedor de instância e um provedor de método. Na verdade, um único provedor pode atuar como todos os três tipos de provedor, implementando todos os métodos e registrando-se corretamente.