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

IWbemHiPerfProvider::CreateRefreshableObject 메서드는 새로 고칠 수 있는 instance 개체를 요청합니다. WMI 리프레셔는 IWbemConfigureRefresher::AddObjectByPath 또는 IWbemConfigureRefresher::AddObjectByTemplate 인터페이스에 대한 클라이언트 요청에 대한 응답으로 IWbemHiPerfProvider::CreateRefreshableObject를 호출합니다. 공급자는 제공된 템플릿 개체에서 키를 읽고 pRefresher의 refresh 메서드가 호출될 때마다 새로 고칠 ppRefreshable 매개 변수의 개체를 제공합니다. 공급자는 IWbemHiPerfProvider::CreateRefresher에 대한 이전 호출에서 얻은 제공된 새로 고침에 새로 고침 가능한 개체를 연결합니다.

참고 공급자가 이 메서드를 구현하지 않으면 WBEM_E_PROVIDER_NOT_CAPABLE 반환해야 합니다.
 

구문

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 Management에 대한 포인터입니다. 포인터를 실행하는 동안 WMI로 다시 호출해야 하는 경우 공급자는 해당 포인터에서 AddRef 를 호출합니다.

[in] pTemplate

템플릿을 포함하는 IWbemObjectAccess 개체에 대한 포인터입니다.

[in] pRefresher

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

[in] lFlags

예약되어 있습니다. 이 매개 변수는 0이어야 합니다.

[in] pContext

일반적으로 NULL; 그렇지 않으면 하나 이상의 동적 클래스 공급자에 필요한 IWbemContext 개체에 대한 포인터입니다. 컨텍스트 개체의 값은 특정 공급자 설명서에 지정해야 합니다. 이 매개 변수에 대한 자세한 내용은 WMI 호출을 참조하세요.

[out] ppRefreshable

새로 고칠 수 있는 개체를 포함하는 IWbemObjectAccess 개체에 대한 참조를 포함하는 포인터입니다.

[out] plId

이 새로 고침 가능한 개체를 고유하게 식별하는 공급자가 반환한 정수에 대한 포인터입니다.

반환 값

이 메서드는 메서드 호출의 상태를 나타내는 HRESULT를 반환합니다. 다음 목록에는 HRESULT에 포함된 값이 나열되어 있습니다.

설명

제공된 instance 템플릿에는 키 속성이 채워진 개체가 포함됩니다. 반환된 개체는 새로 고칠 수 있는 고유 개체여야 합니다. 새로 고침 작업 중에는 공급자가 새로 고칠 수 있는 개체를 터치하면 안됩니다. 리프레셔를 소유한 개체가 개체를 복원하지 않는 한 공급자는 반환된 개체에 액세스해서는 안 됩니다. 제공된 instance 템플릿의 키 속성이 채워집니다. 또한 공급자는 instance 경로의 유효성을 검사해야 합니다.

예제

다음 코드 예제에서는 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

추가 정보

WMI 공급자 개발

IWbemHiPerfProvider

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

성능 카운터 공급자

인스턴스 공급자 작성