IWbemHiPerfProvider ::CreateRefreshableObject, méthode (wbemprov.h)
La méthode IWbemHiPerfProvider ::CreateRefreshableObject demande un objet instance actualisable. L’actualisation WMI appelle IWbemHiPerfProvider ::CreateRefreshableObject en réponse à une demande cliente adressée aux interfaces IWbemConfigureRefresher ::AddObjectByPath ou IWbemConfigureRefresher ::AddObjectByTemplate . Le fournisseur lit la clé à partir de l’objet de modèle fourni et fournit un objet dans le paramètre ppRefreshable qui sera actualisé chaque fois que la méthode refresh sur pRefresher est appelée. Le fournisseur associe l’objet actualisable à l’actualisation fourni, obtenu à partir d’un appel antérieur à IWbemHiPerfProvider ::CreateRefresher.
Syntaxe
HRESULT CreateRefreshableObject(
[in] IWbemServices *pNamespace,
[in] IWbemObjectAccess *pTemplate,
[in] IWbemRefresher *pRefresher,
[in] long lFlags,
[in] IWbemContext *pContext,
[out] IWbemObjectAccess **ppRefreshable,
[out] long *plId
);
Paramètres
[in] pNamespace
Un pointeur IWbemServices vers Windows Management, qui peut traiter toute requête effectuée par le fournisseur. Si le pointeur doit rappeler WMI pendant son exécution, le fournisseur appelle AddRef dessus.
[in] pTemplate
Pointeur vers un objet IWbemObjectAccess qui contient le modèle.
[in] pRefresher
Pointeur vers un objet IWbemRefresher qui contient un refresher obtenu en appelant IWbemHiPerfProvider ::CreateRefresher.
[in] lFlags
Réservé. Ce paramètre doit être 0.
[in] pContext
Généralement NULL ; sinon, pointeur vers un objet IWbemContext requis par un ou plusieurs fournisseurs de classes dynamiques. Les valeurs de l’objet de contexte doivent être spécifiées dans la documentation du fournisseur spécifique. Pour plus d’informations sur ce paramètre, consultez Effectuer des appels à WMI.
[out] ppRefreshable
Pointeur qui contient la référence à un objet IWbemObjectAccess , qui contiendra l’objet actualisable.
[out] plId
Pointeur vers un entier retourné par le fournisseur qui identifie de manière unique cet objet actualisable.
Valeur retournée
Cette méthode retourne une valeur HRESULT qui indique le statut de l'appel de méthode. La liste suivante répertorie la valeur contenue dans un HRESULT.
Remarques
Le modèle de instance fourni contient un objet avec les propriétés de clé renseignées. L’objet retourné doit être un objet unique et actualisable. Le fournisseur ne doit pas toucher l’objet actualisable, sauf pendant une opération d’actualisation. Votre fournisseur ne doit pas accéder à l’objet retourné, sauf si l’objet propriétaire de l’actualisation restaure l’objet. Les propriétés clés du modèle instance fourni seront renseignées. Le fournisseur doit également valider le chemin d’accès instance.
Exemples
L’exemple de code suivant décrit comment implémenter 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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista |
Serveur minimal pris en charge | Windows Server 2008 |
Plateforme cible | Windows |
En-tête | wbemprov.h (inclure Wbemidl.h) |
Bibliothèque | Wbemuuid.lib |
DLL | Wmiprvsd.dll |
Voir aussi
Développement d’un fournisseur WMI
Création d’un fournisseur d’instance dans un fournisseur de haute performance