ADsBuildEnumerator 함수(adshlp.h)
ADsBuildEnumerator 함수는 지정된 ADSI 컨테이너 개체에 대한 열거자 개체를 만듭니다.
구문
HRESULT ADsBuildEnumerator(
[in] IADsContainer *pADsContainer,
[out] IEnumVARIANT **ppEnumVariant
);
매개 변수
[in] pADsContainer
형식: IADsContainer*
열거할 개체의 IADsContainer 인터페이스에 대한 포인터입니다.
[out] ppEnumVariant
형식: IEnumVARIANT**
지정된 컨테이너 개체에 대해 만든 열거자 개체를 수신하는 IEnumVARIANT 인터페이스 포인터에 대한 포인터입니다.
반환 값
형식: HRESULT
이 메서드는 성공적인 작업에 대한 S_OK 포함하여 표준 HRESULT 반환 값을 지원합니다. 다른 반환 값에 대한 자세한 내용은 ADSI 오류 코드를 참조하세요.
설명
ADsBuildEnumerator 도우미 함수는 열거자 개체에서 IEnumVARIANT 인터페이스를 검색하는 데 사용되는 호출을 래핑합니다.
컨테이너에서 사용 가능한 개체를 열거하려면
- ADsBuildEnumerator 함수를 호출하여 컨테이너의 내용을 열거할 IEnumVARIANT 개체를 만듭니다.
- 열거자 개체에서 항목을 검색하는 데 필요한 횟수만큼 ADsEnumerateNext 함수를 호출합니다.
- 더 이상 필요하지 않은 경우 ADSFreeEnumerator 함수를 호출하여 열거자 개체를 해제합니다.
예제
다음 코드 예제에서는 ADsBuildEnumerator, ADsEnumerateNext 및 ADSFreeEnumerator 함수를 사용하여 컨테이너의 내용을 열거하는 방법을 보여 줍니다.
HRESULT PrintAllObjects(IADsContainer* pContainer)
{
HRESULT hr;
if(NULL == pContainer)
{
return E_INVALIDARG;
}
IEnumVARIANT *pEnum = NULL;
// Create an enumerator object in the container.
hr = ADsBuildEnumerator(pContainer, &pEnum);
if(SUCCEEDED(hr))
{
VARIANT var;
ULONG ulFetched = 0L;
// Get the next contained object.
while(S_OK == (hr = ADsEnumerateNext(pEnum, 1, &var, &ulFetched)) && (ulFetched > 0))
{
IADs *pADs;
// Print the object
hr = V_DISPATCH(&var)->QueryInterface(IID_IADs, (void**)&pADs);
if(SUCCEEDED(hr))
{
CComBSTR sbstr;
IADsContainer *pChildContainer;
hr = pADs->get_Name(&sbstr);
if(SUCCEEDED(hr))
{
wprintf(sbstr);
wprintf(L"\n");
}
hr = pADs->QueryInterface(IID_IADsContainer, (void**)&pChildContainer);
if(SUCCEEDED(hr))
{
// If the retrieved object is a container, recursively print its contents as well.
PrintAllObjects(pChildContainer);
}
pADs->Release();
}
// Release the VARIANT.
VariantClear(&var);
}
ADsFreeEnumerator(pEnum);
}
return hr;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
지원되는 최소 서버 | Windows Server 2008 |
대상 플랫폼 | Windows |
헤더 | adshlp.h |
라이브러리 | Activeds.lib |
DLL | Activeds.dll |