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.
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
Umwandeln eines Instanzanbieters in einen Hochleistungsanbieter