Partager via


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.

Note Si un fournisseur n’implémente pas cette méthode, il doit retourner WBEM_E_PROVIDER_NOT_CAPABLE.
 

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

IWbemHiPerfProvider

Création d’un fournisseur d’instance dans un fournisseur de haute performance

Fournisseur de compteurs de performances

Écriture d’un fournisseur d’instances