Método Provider::EnumerateInstances (provider.h)

[A classe Provider faz parte do WMI Provider Framework que agora é considerado em estado final e nenhum desenvolvimento, melhoria ou atualização adicional estará disponível para problemas não relacionados à segurança que afetarem essas bibliotecas. As APIs de MI devem ser usadas para todos os novos desenvolvimentos.]

O método EnumerateInstances é chamado pelo WMI para recuperar todas as instâncias da classe de um provedor de estrutura.

Sintaxe

HRESULT EnumerateInstances(
  MethodContext *pMethodContext,
  long          lFlags
);

Parâmetros

pMethodContext

Ponteiro para o objeto de contexto dessa chamada. Esse valor contém todas as propriedades IWbemContext especificadas pelo cliente. Além disso, esse ponteiro deve ser usado como um parâmetro para todas as chamadas de volta para o WMI.

lFlags

Máscara de bits de sinalizadores com informações sobre a operação EnumerateInstances . Esse é o valor especificado pelo cliente no método IWbemServices::CreateInstanceEnum .

Os seguintes sinalizadores são manipulados por (e filtrados) pelo WMI:

  • WBEM_FLAG_DEEP
  • WBEM_FLAG_SHALLOW
  • WBEM_FLAG_RETURN_IMMEDIATELY
  • WBEM_FLAG_FORWARD_ONLY
  • WBEM_FLAG_BIDIRECTIONAL
  • WBEM_FLAG_USE_AMENDED_QUALIFIERS

Retornar valor

A implementação do provedor de estrutura padrão desse método retorna WBEM_E_PROVIDER_NOT_CAPABLE ao método de chamada. O método IWbemServices::CreateInstanceEnum lista os valores retornados mais comuns, mas você pode optar por retornar qualquer código de retorno COM.

Comentários

Não é um erro para EnumerateInstances retornar instâncias zero criando uma instância zero de CInstance e definindo o valor retornado como WBEM_S_NO_ERROR.

O WMI geralmente chama EnumerateInstances quando um aplicativo cliente chama IWbemServices::CreateInstanceEnum, embora o WMI possa chamar EnumerateInstances em outras situações também. Veja a seguir uma maneira comum de substituir EnumerateInstances:

  1. Crie uma instância vazia da classe usando Provider::CreateNewInstance.
  2. Preencha as propriedades da instância vazia usando os métodos Set da classe CInstance , como CInstance::SetByte ou CInstance::SetStringArray.
  3. Envie a instância de volta para o cliente usando CInstance::Commit.
Se você estiver criando um provedor somente de método e não tiver instâncias ou se a enumeração de instâncias de sua classe retornar muitas instâncias, você poderá decidir dar suporte a consultas que recuperam apenas instâncias específicas.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho provider.h (inclua FwCommon.h)
Biblioteca FrameDyn.lib
DLL FrameDynOS.dll; FrameDyn.dll