Determinar o status de push ou pull

Você pode modelar um provedor de classe como um provedor de push ou pull, que especifica como um provedor espera interagir com o WMI. Os provedores de pull recebem uma solicitação do WMI e atendem à solicitação gerando os dados dinamicamente ou recuperando-os de um cache local. Os provedores de pull também devem implementar um grande número de interfaces.

Um provedor de pull gera definições de classe dinamicamente. Normalmente, os dados gerenciados por um provedor de pull são alterados com frequência, exigindo que o provedor gere a classe dinamicamente ou recupere a classe de um cache local sempre que um aplicativo emite uma solicitação. Um provedor de pull deve implementar seus próprios mecanismos de recuperação de dados, cache e notificação de eventos. Como a maioria dos provedores são provedores de pull, a documentação neste arquivo pressupõe que você esteja criando um provedor de pull, a menos que tenha declarado explicitamente o contrário.

Por outro lado, o WMI usa dados no repositório WMI para lidar com todas as solicitações de aplicativo para provedores de push. Os provedores de push também usam menos métodos de interface e, portanto, são mais fáceis de implementar. Um provedor de push usa o repositório WMI como uma área de armazenamento para obter informações sobre o objeto gerenciado e atualiza essas informações somente durante a inicialização. Por exemplo, o provedor de classe WDM incluído na seção WMI do Microsoft Windows Software Development Kit (SDK) é modelado como um provedor de push.

Usando o repositório WMI como área de armazenamento, um provedor de push obtém os seguintes benefícios em relação a um provedor de pull:

  • O provedor não precisa implementar um cache local para armazenar dados.
  • O provedor não precisa dar suporte à recuperação de dados; em vez disso, o provedor pode contar com o WMI para fornecer suporte de recuperação.
  • Quando um aplicativo solicita dados fornecidos pelo provedor, o WMI atende a essa solicitação.
  • O provedor também pode contar com o WMI para dar suporte à notificação de eventos.

No entanto, como um provedor de push é atualizado somente durante a inicialização, as alterações em uma classe podem não ser refletidas no repositório WMI por algum tempo. Portanto, o modelo de provedor de push funciona melhor com classes que mudam pouco ou são completamente estáticas.