Share via


IWbemHiPerfProvider::CreateRefreshableEnum 方法 (wbemprov.h)

IWbemHiPerfProvider::CreateRefreshableEnum 方法會建立新的可重新整理列舉。 WMI 重新整理程式會呼叫此方法,以回應 IWbemConfigureRefresher::AddEnum 的用戶端要求。 提供者會將提供的 IWbemHiPerfEnum 物件與提供的重新整理器產生關聯。 在每次呼叫提供的重新整理器的 Refresh 方法時,提供者可確保列舉值包含 wszClass 參數中所列類別的所有實例集合,而且這些實例包含更新的資訊。 執行這項操作的其中一個可能方法是在重新整理器中保留可重新整理的列舉值陣列。

注意 如果提供者未實作此方法,它必須 傳回WBEM_E_PROVIDER_NOT_CAPABLE
 

語法

HRESULT CreateRefreshableEnum(
  [in]  IWbemServices   *pNamespace,
  [in]  LPCWSTR         wszClass,
  [in]  IWbemRefresher  *pRefresher,
  [in]  long            lFlags,
  [in]  IWbemContext    *pContext,
  [in]  IWbemHiPerfEnum *pHiPerfEnum,
  [out] long            *plId
);

參數

[in] pNamespace

IWbemServices 指標回到 Windows 管理,可為提供者提出的任何要求提供服務。 如果 pNamespace 必須在執行期間回呼 Windows 管理,提供者就會在此指標上呼叫 AddRef

[in] wszClass

常數、 以 Null 結尾的 16 位 Unicode 字元字串,其中包含類別的名稱,其實例會在 pHiPerfEnum 參數中重新整理。

[in] pRefresher

IWbemRefresher 物件的指標,其中包含藉由呼叫 IWbemHiPerfProvider::CreateRefresher 取得的重新整理程式。

[in] lFlags

保留的。 此參數必須是 0 (零) 。

[in] pContext

通常 為 NULL;否則,一或多個動態類別提供者所需的 IWbemContext 物件的指標。 內容物件中的值必須在特定提供者的檔中指定。 如需此參數的詳細資訊,請參閱 呼叫 WMI

[in] pHiPerfEnum

IWbemHiPerfEnum 物件的指標,其中包含高效能列舉。

[out] plId

提供者所傳回之整數的指標,可唯一識別可重新整理的列舉。

傳回值

這個方法會傳回 HRESULT ,指出方法呼叫的狀態。 下列清單列出 HRESULT 中包含的值。

備註

提供者不得在重新整理作業期間修改可重新整理的列舉值。 列舉是淺層的,因此放置於列舉值中的所有實例都應該是 wszClass 所指定的類別。

除非 WMI 呼叫擁有者的 IWbemRefresher::Refresh 方法,否則提供者不得存取列舉值。 如同可重新整理的物件,除非擁有列舉值的物件重新整理列舉值,否則提供者不得更新列舉值。

範例

下列程式代碼範例說明如何實作 CreateRefreshableEnum

HRESULT CHiPerfProvider::CreateRefreshableEnum(
  /* [in] */IWbemServices *pNamespace,
  /* [in] */LPCWSTR wszClass,
  /* [in] */IWbemRefresher *pRefresher,
  /* [in] */long lFlags,
  /* [in] */IWbemContext *pCtx,
  /* [in] */IWbemHiPerfEnum *pEnum,
  /* [out] */ long *plId
)
{
  // Use a private interface defined
  // to talk with the refresher.
  IMyRefresher* pMyRefr = NULL;

  HRESULT hres = pRefresher->QueryInterface(
    IID_IMyRefresher,
    (void**) &pMyRefr );

  if ( SUCCEEDED( hres ) )
  {
  LPLONG plLastId;
    // Generates a unique identifier
    *plId = InterlockedIncrement( &plLastId );

    // Use an internal method to add the
    // enumerator to an array.
    pMyRefr->AddEnum( wszClass, *plId, pEnum );

    pMyRefr->Release();
  }

  return hres;
}

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 wbemprov.h (包含 Wbemidl.h)
程式庫 Wbemuuid.lib
Dll Wmiprvsd.dll

另請參閱

開發 WMI 提供者

IWbemHiPerfProvider

將實例提供者變成 High-Performance 提供者

效能計數器提供者

撰寫實例提供者