IWbemHiPerfProvider::CreateRefreshableEnum 메서드(wbemprov.h)
IWbemHiPerfProvider::CreateRefreshableEnum 메서드는 새로 고칠 수 있는 새 열거형을 만듭니다. WMI Refresher는 IWbemConfigureRefresher::AddEnum에 대한 클라이언트 요청에 대한 응답으로 이 메서드를 호출합니다. 공급자는 제공된 IWbemHiPerfEnum 개체를 제공된 새로 고침과 연결합니다. 제공된 새로 고침의 Refresh 메서드를 호출할 때마다 공급자는 열거자가 wszClass 매개 변수에 나열된 클래스의 모든 인스턴스 집합을 포함하고 이러한 인스턴스에 업데이트된 정보가 포함되어 있는지 확인합니다. 이 작업을 수행할 수 있는 한 가지 방법은 새로 고칠 수 있는 열거자 배열을 새로 고침에 유지하는 것입니다.
구문
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 |
추가 정보
인스턴스 공급자를 고성능 공급자로 만들기