Freigeben über


IWbemHiPerfProvider::CreateRefreshableObject-Methode (wbemprov.h)

Die IWbemHiPerfProvider::CreateRefreshableObject-Methode fordert ein aktualisierbares instance-Objekt an. Die WMI-Aktualisierung ruft IWbemHiPerfProvider::CreateRefreshableObject als Reaktion auf eine Clientanforderung an die IWbemConfigureRefresher::AddObjectByPath - oder IWbemConfigureRefresher::AddObjectByTemplate-Schnittstellen auf. Der Anbieter liest den Schlüssel aus dem angegebenen Vorlagenobjekt und stellt ein -Objekt im ppRefreshable-Parameter bereit, das aktualisiert wird, wenn die refresh-Methode für pRefresher aufgerufen wird. Der Anbieter ordnet das aktualisierbare Objekt der angegebenen Aktualisierung zu, die aus einem früheren Aufruf von IWbemHiPerfProvider::CreateRefresher abgerufen wurde.

Hinweis Wenn ein Anbieter diese Methode nicht implementiert, muss er WBEM_E_PROVIDER_NOT_CAPABLE zurückgeben.
 

Syntax

HRESULT CreateRefreshableObject(
  [in]  IWbemServices     *pNamespace,
  [in]  IWbemObjectAccess *pTemplate,
  [in]  IWbemRefresher    *pRefresher,
  [in]  long              lFlags,
  [in]  IWbemContext      *pContext,
  [out] IWbemObjectAccess **ppRefreshable,
  [out] long              *plId
);

Parameter

[in] pNamespace

Ein IWbemServices-Zeiger zurück in die Windows-Verwaltung, die jede Anforderung des Anbieters verarbeiten kann. Wenn der Zeiger WMI während der Ausführung wieder aufrufen muss, ruft der Anbieter AddRef auf.

[in] pTemplate

Zeiger auf ein IWbemObjectAccess-Objekt , das die Vorlage enthält.

[in] pRefresher

Zeiger auf ein IWbemRefresher-Objekt , das eine Aktualisierung enthält, die durch Aufrufen von IWbemHiPerfProvider::CreateRefresher abgerufen wird.

[in] lFlags

Reserviert. Dieser Parameter muss 0 sein.

[in] pContext

In der Regel NULL; Andernfalls ein Zeiger auf ein IWbemContext-Objekt , das von einem oder mehreren dynamischen Klassenanbietern benötigt wird. Die Werte im Kontextobjekt müssen in der spezifischen Anbieterdokumentation angegeben werden. Weitere Informationen zu diesem Parameter finden Sie unter Ausführen von Aufrufen an WMI.

[out] ppRefreshable

Zeiger, der den Verweis auf ein IWbemObjectAccess-Objekt enthält, das das aktualisierbare Objekt enthält.

[out] plId

Zeiger auf eine ganze Zahl, die vom Anbieter zurückgegeben wird, die dieses aktualisierbare Objekt eindeutig identifiziert.

Rückgabewert

Diese Methode gibt ein HRESULT zurück, das den Status des Methodenaufrufs angibt. In der folgenden Liste ist der in einem HRESULT enthaltene Wert aufgeführt.

Hinweise

Die angegebene instance Vorlage enthält ein -Objekt mit den ausgefüllten Schlüsseleigenschaften. Das zurückgegebene Objekt sollte ein eindeutiges, aktualisierbares Objekt sein. Der Anbieter darf das aktualisierbare Objekt außer während eines Aktualisierungsvorgangs nicht berühren. Ihr Anbieter darf nicht auf das zurückgegebene Objekt zugreifen, es sei denn, das Objekt, das die Aktualisierung besitzt, stellt das Objekt wieder her. Die wichtigsten Eigenschaften der angegebenen instance Vorlage werden ausgefüllt. Der Anbieter sollte auch den instance Pfad überprüfen.

Beispiele

Im folgenden Codebeispiel wird beschrieben, wie CreateRefreshableObject implementiert wird.

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;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile wbemprov.h (include Wbemidl.h)
Bibliothek Wbemuuid.lib
DLL Wmiprvsd.dll

Weitere Informationen

Entwickeln eines WMI-Anbieters

IWbemHiPerfProvider

Umwandeln eines Instanzanbieters in einen Hochleistungsanbieter

Leistungsindikator-Provider

Schreiben eines Instanzanbieters