IWbemHiPerfProvider::CreateRefreshableObject 方法 (wbemprov.h)
IWbemHiPerfProvider::CreateRefreshableObject 方法會要求可重新整理的實例物件。 WMI 重新整理器會呼叫 IWbemHiPerfProvider::CreateRefreshableObject ,以回應 IWbemConfigureRefresher::AddObjectByPath 或 IWbemConfigureRefresher::AddObjectByTemplate 介面的要求。 提供者會從提供的樣板對象讀取索引鍵,並在呼叫 pRefresher 上的 refresh 方法時,提供 ppRefreshable 參數中的物件。 提供者會將可重新整理的物件與提供的重新整理器建立關聯,從先前呼叫 IWbemHiPerfProvider::CreateRefresher 取得。
語法
HRESULT CreateRefreshableObject(
[in] IWbemServices *pNamespace,
[in] IWbemObjectAccess *pTemplate,
[in] IWbemRefresher *pRefresher,
[in] long lFlags,
[in] IWbemContext *pContext,
[out] IWbemObjectAccess **ppRefreshable,
[out] long *plId
);
參數
[in] pNamespace
IWbemServices 指標回到 Windows 管理,可為提供者提出的任何要求提供服務。 如果指標在執行期間必須回呼 WMI,提供者就會在其上呼叫 AddRef 。
[in] pTemplate
包含範本之 IWbemObjectAccess 物件的指標。
[in] pRefresher
IWbemRefresher 物件的指標,其中包含藉由呼叫 IWbemHiPerfProvider::CreateRefresher 取得的重新整理程式。
[in] lFlags
保留的。 此參數必須是 0。
[in] pContext
通常 為 NULL;否則,一或多個動態類別提供者所需的 IWbemContext 物件的指標。 內容物件中的值必須在特定提供者檔中指定。 如需此參數的詳細資訊,請參閱 呼叫 WMI。
[out] ppRefreshable
保存 IWbemObjectAccess 物件的參考指標,其中包含可重新整理的物件。
[out] plId
提供者所傳回之整數的指標,可唯一識別這個可重新整理的物件。
傳回值
這個方法會傳回 HRESULT ,指出方法呼叫的狀態。 下列清單列出 HRESULT 中包含的值。
備註
提供的實例範本將包含已填入索引鍵屬性的物件。傳回的對象應該是唯一且可重新整理的物件。 除了重新整理作業期間,提供者不得觸碰可重新整理的物件。 除非擁有重新整理器的物件還原對象,否則提供者不得存取傳回的物件。 所提供實例範本的主要屬性將會填滿。提供者也應該驗證實例路徑。
範例
下列程式代碼範例說明如何實作 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;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista |
最低支援的伺服器 | Windows Server 2008 |
目標平台 | Windows |
標頭 | wbemprov.h (包含 Wbemidl.h) |
程式庫 | Wbemuuid.lib |
Dll | Wmiprvsd.dll |
另請參閱
將實例提供者變成 High-Performance 提供者