다음을 통해 공유


IWbemHiPerfProvider::CreateRefreshableEnum 메서드(wbemprov.h)

IWbemHiPerfProvider::CreateRefreshableEnum 메서드는 새로 고칠 수 있는 새 열거형을 만듭니다. WMI Refresher는 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 Management에 대한 포인터입니다. pNamespace가 실행 중에 Windows Management로 다시 호출해야 하는 경우 공급자는 이 포인터에서 AddRef를 호출합니다.

[in] wszClass

pHiPerfEnum 매개 변수에서 인스턴스가 새로 고쳐진 클래스의 이름을 포함하는 16비트 유니코드 문자의 null로 끝나는 상수 문자열입니다.

[in] pRefresher

IWbemHiPerfProvider::CreateRefresher를 호출하여 얻은 새로 고침을 포함하는 IWbemRefresher 개체에 대한 포인터입니다.

[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

인스턴스 공급자를 고성능 공급자로 만들기

성능 카운터 공급자

인스턴스 공급자 작성