Metodo IWbemHiPerfProvider::CreateRefreshableObject (wbemprov.h)
Il metodo IWbemHiPerfProvider::CreateRefreshableObject richiede un oggetto istanza aggiornabile. Il refresher WMI chiama IWbemHiPerfProvider::CreateRefreshableObject in risposta a una richiesta client alle interfacce IWbemConfigureRefresher::AddObjectByPath o IWbemConfigureRefresher::AddObjectByTemplate . Il provider legge la chiave dall'oggetto modello fornito e fornisce un oggetto nel parametro ppRefreshable che verrà aggiornato ogni volta che viene chiamato il metodo refresh in pRefresher . Il provider associa l'oggetto aggiornabile all'aggiornamento fornito, ottenuto da una chiamata precedente a IWbemHiPerfProvider::CreateRefresher.
Sintassi
HRESULT CreateRefreshableObject(
[in] IWbemServices *pNamespace,
[in] IWbemObjectAccess *pTemplate,
[in] IWbemRefresher *pRefresher,
[in] long lFlags,
[in] IWbemContext *pContext,
[out] IWbemObjectAccess **ppRefreshable,
[out] long *plId
);
Parametri
[in] pNamespace
Puntatore IWbemServices in Gestione Windows, che può gestire qualsiasi richiesta effettuata dal provider. Se il puntatore deve richiamare in WMI durante l'esecuzione, il provider chiama AddRef su di esso.
[in] pTemplate
Puntatore a un oggetto IWbemObjectAccess che contiene il modello.
[in] pRefresher
Puntatore a un oggetto IWbemRefresher che contiene un aggiornamento ottenuto chiamando IWbemHiPerfProvider::CreateRefresher.
[in] lFlags
Riservato. Questo parametro deve essere 0.
[in] pContext
In genere NULL; in caso contrario, un puntatore a un oggetto IWbemContext richiesto da uno o più provider di classi dinamiche. I valori nell'oggetto contesto devono essere specificati nella documentazione specifica del provider. Per altre informazioni su questo parametro, vedere Effettuare chiamate a WMI.
[out] ppRefreshable
Puntatore che contiene il riferimento a un oggetto IWbemObjectAccess , che conterrà l'oggetto aggiornabile.
[out] plId
Puntatore a un numero intero restituito dal provider che identifica in modo univoco questo oggetto aggiornabile.
Valore restituito
Questo metodo restituisce un valore HRESULT che indica lo stato della chiamata al metodo. L'elenco seguente elenca il valore contenuto in hrESULT.
Commenti
Il modello di istanza fornito conterrà un oggetto con le proprietà chiave compilate. L'oggetto restituito deve essere un oggetto univoco aggiornabile. Il provider non deve toccare l'oggetto aggiornabile tranne durante un'operazione di aggiornamento. Il provider non deve accedere all'oggetto restituito, a meno che l'oggetto proprietario dell'aggiornamento non ripristini l'oggetto. Verranno compilate le proprietà chiave del modello di istanza fornito. Il provider deve anche convalidare il percorso dell'istanza.
Esempio
Nell'esempio di codice seguente viene descritto come implementare 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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Server minimo supportato | Windows Server 2008 |
Piattaforma di destinazione | Windows |
Intestazione | wbemprov.h (include Wbemidl.h) |
Libreria | Wbemuuid.lib |
DLL | Wmiprvsd.dll |
Vedi anche
Creazione di un provider di istanze in un provider di High-Performance