Método IWbemHiPerfProvider::CreateRefreshableEnum (wbemprov.h)

O método IWbemHiPerfProvider::CreateRefreshableEnum cria uma nova enumeração atualizável. O Atualizador WMI chama esse método em resposta a uma solicitação de cliente para IWbemConfigureRefresher::AddEnum. O provedor associa o objeto IWbemHiPerfEnum fornecido ao atualizador fornecido. Em cada chamada para o método Refresh do atualizador fornecido, o provedor garante que o enumerador contenha um conjunto de todas as instâncias da classe listadas no parâmetro wszClass e que essas instâncias contenham informações atualizadas. Uma maneira possível de fazer isso seria manter uma matriz de enumeradores atualizáveis no atualizador.

Nota Se um provedor não implementar esse método, ele deverá retornar WBEM_E_PROVIDER_NOT_CAPABLE.
 

Sintaxe

HRESULT CreateRefreshableEnum(
  [in]  IWbemServices   *pNamespace,
  [in]  LPCWSTR         wszClass,
  [in]  IWbemRefresher  *pRefresher,
  [in]  long            lFlags,
  [in]  IWbemContext    *pContext,
  [in]  IWbemHiPerfEnum *pHiPerfEnum,
  [out] long            *plId
);

Parâmetros

[in] pNamespace

Um ponteiro IWbemServices de volta para o Gerenciamento do Windows, que pode atender a todas as solicitações feitas pelo provedor. Se pNamespace precisar chamar de volta para o Gerenciamento do Windows durante sua execução, o provedor chamará AddRef nesse ponteiro.

[in] wszClass

Constante, cadeia de caracteres terminada em nulo de caracteres Unicode de 16 bits que contém o nome da classe , cujas instâncias são atualizadas no parâmetro pHiPerfEnum .

[in] pRefresher

Ponteiro para um objeto IWbemRefresher que contém um atualizador obtido chamando IWbemHiPerfProvider::CreateRefresher.

[in] lFlags

Reservado. Esse parâmetro deve ser 0 (zero).

[in] pContext

Normalmente NULL; caso contrário, um ponteiro para um objeto IWbemContext exigido por um ou mais provedores de classe dinâmica. Os valores no objeto de contexto devem ser especificados na documentação do provedor específico. Para obter mais informações sobre esse parâmetro, consulte Fazendo chamadas para WMI.

[in] pHiPerfEnum

Ponteiro para um objeto IWbemHiPerfEnum que contém a enumeração de alto desempenho.

[out] plId

Ponteiro para um inteiro retornado pelo provedor que identifica exclusivamente a enumeração atualizável.

Retornar valor

Esse método retorna um HRESULT que indica o status da chamada de método. A lista a seguir lista o valor contido em um HRESULT.

Comentários

O provedor não deve modificar o enumerador atualizável, exceto durante uma operação de atualização. A enumeração é superficial, portanto, todas as instâncias colocadas no enumerador devem ser da classe especificada por wszClass.

O provedor não deve acessar o enumerador, a menos que o WMI chame o método IWbemRefresher::Refresh do proprietário. Assim como acontece com objetos atualizáveis, o provedor não deve atualizar o enumerador, a menos que o objeto proprietário do enumerador atualize o enumerador.

Exemplos

O exemplo de código a seguir descreve como implementar CreateRefreshableEnum.

HRESULT CHiPerfProvider::CreateRefreshableEnum(
  /* [in] */IWbemServices *pNamespace,
  /* [in] */LPCWSTR wszClass,
  /* [in] */IWbemRefresher *pRefresher,
  /* [in] */long lFlags,
  /* [in] */IWbemContext *pCtx,
  /* [in] */IWbemHiPerfEnum *pEnum,
  /* [out] */ long *plId
)
{
  // Use a private interface defined
  // to talk with the refresher.
  IMyRefresher* pMyRefr = NULL;

  HRESULT hres = pRefresher->QueryInterface(
    IID_IMyRefresher,
    (void**) &pMyRefr );

  if ( SUCCEEDED( hres ) )
  {
  LPLONG plLastId;
    // Generates a unique identifier
    *plId = InterlockedIncrement( &plLastId );

    // Use an internal method to add the
    // enumerator to an array.
    pMyRefr->AddEnum( wszClass, *plId, pEnum );

    pMyRefr->Release();
  }

  return hres;
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho wbemprov.h (include Wbemidl.h)
Biblioteca Wbemuuid.lib
DLL Wmiprvsd.dll

Confira também

Como desenvolver um provedor do WMI

IWbemHiPerfProvider

Transformar um provedor de instância em um provedor de alto desempenho

Provedor de Contadores de Desempenho

Escrever um provedor de instância