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.
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
Transformar um provedor de instância em um provedor de alto desempenho