Método IWbemHiPerfProvider::CreateRefreshableObject (wbemprov.h)
O método IWbemHiPerfProvider::CreateRefreshableObject solicita um objeto de instância atualizável. O Atualizador WMI chama IWbemHiPerfProvider::CreateRefreshableObject em resposta a uma solicitação de cliente para as interfaces IWbemConfigureRefresher::AddObjectByPath ou IWbemConfigureRefresher::AddObjectByTemplate . O provedor lê a chave do objeto de modelo fornecido e fornece um objeto no parâmetro ppRefreshable que será atualizado sempre que o método de atualização em pRefresher for chamado. O provedor associa o objeto atualizável ao atualizador fornecido, obtido de uma chamada anterior para IWbemHiPerfProvider::CreateRefresher.
Sintaxe
HRESULT CreateRefreshableObject(
[in] IWbemServices *pNamespace,
[in] IWbemObjectAccess *pTemplate,
[in] IWbemRefresher *pRefresher,
[in] long lFlags,
[in] IWbemContext *pContext,
[out] IWbemObjectAccess **ppRefreshable,
[out] long *plId
);
Parâmetros
[in] pNamespace
Um ponteiro IWbemServices de volta para o Gerenciamento do Windows, que pode atender a qualquer solicitação feita pelo provedor. Se o ponteiro precisar chamar novamente para o WMI durante a execução, o provedor chamará AddRef nele.
[in] pTemplate
Ponteiro para um objeto IWbemObjectAccess que contém o modelo.
[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.
[in] pContext
Normalmente NULL; caso contrário, um ponteiro para um objeto IWbemContext que é exigido por um ou mais provedores de classe dinâmica. Os valores no objeto de contexto devem ser especificados na documentação específica do provedor. Para obter mais informações sobre esse parâmetro, consulte Fazendo chamadas para WMI.
[out] ppRefreshable
Ponteiro que contém a referência a um objeto IWbemObjectAccess , que conterá o objeto atualizável.
[out] plId
Ponteiro para um inteiro retornado pelo provedor que identifica exclusivamente esse objeto 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 modelo de instância fornecido conterá um objeto com as propriedades de chave preenchidas. O objeto retornado deve ser um objeto exclusivo e atualizável. O provedor não deve tocar no objeto atualizável, exceto durante uma operação de atualização. Seu provedor não deve acessar o objeto retornado, a menos que o objeto proprietário do atualizador restaure o objeto. As principais propriedades do modelo de instância fornecida serão preenchidas. O provedor também deve validar o caminho da instância.
Exemplos
O exemplo de código a seguir descreve como implementar CreateRefreshableObject.
HRESULT CMyHiPerfProvider::CreateRefreshableObject(
/* [in] */IWbemServices *pNamespace,
/* [in] */IWbemObjectAccess *pTemplate,
/* [in] */IWbemRefresher *pRefresher,
/* [in] */long lFlags,
/* [in] */IWbemContext *pCtx,
/* [out] */IWbemObjectAccess **ppRefreshable,
/* [out] */ long *plId
)
{
// Use a private interface defined
// to talk with the refresher. You must define
// the IMyRefresher interface.
IMyRefresher* pMyRefr = NULL;
HRESULT hres = pRefresher->QueryInterface(
IID_IMyRefresher,
(void**) &pMyRefr );
if ( SUCCEEDED( hres ) )
{
// Check for a valid instance.
// You must implement the ValidateInst function.
if ( ValidateInst( pTemplate ) )
{
IWbemClassObject* pTemplateObj = NULL;
IWbemClassObject* pCloneObj = NULL;
IWbemObjectAccess* pCloneAcc = NULL;
// Clone the object, then get an
// IWbemObjectAccess pointer.
pTemplate->QueryInterface(
IID_IWbemClassObject,
(void**) &pTemplateObj );
pTemplateObj->Clone( &pCloneObj );
pCloneObj->QueryInterface(
IID_IWbemObjectAccess,
(void**) &pCloneAcc );
// Generate a unique identifier.
// For example, use:
/**plId = InterlockedIncrement( &m_lLastId );*/
// Add the object to an array of
// objects to refresh.
//For example, use:
/*pMyRefr->AddInstance( *plId, pCloneAcc );*/
// Maintains AddRef from QI
*ppRefreshable = pCloneAcc;
pTemplateObj->Release();
pCloneObj->Release();
}
else
{
hres = WBEM_E_NOT_FOUND;
}
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 (inclua 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