다음을 통해 공유


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 인터페이스를 검색하는 데 사용되는 호출을 래핑합니다.

컨테이너에서 사용 가능한 개체를 열거하려면

  1. ADsBuildEnumerator 함수를 호출하여 컨테이너의 내용을 열거할 IEnumVARIANT 개체를 만듭니다.
  2. 열거자 개체에서 항목을 검색하는 데 필요한 횟수만큼 ADsEnumerateNext 함수를 호출합니다.
  3. 더 이상 필요하지 않은 경우 ADSFreeEnumerator 함수를 호출하여 열거자 개체를 해제합니다.
서버에서 페이징된 검색을 지원하고 클라이언트가 서버에서 허용하는 최대 검색 결과를 초과하는 페이지 크기를 지정한 경우 ADsBuildEnumerator 함수는 서버의 오류 및 결과를 사용자에게 전달합니다.

예제

다음 코드 예제에서는 ADsBuildEnumerator, ADsEnumerateNextADSFreeEnumerator 함수를 사용하여 컨테이너의 내용을 열거하는 방법을 보여 줍니다.

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

추가 정보

ADSI 오류 코드

ADSI 함수

ADsEnumerateNext

ADsFreeEnumerator

IADsContainer

IEnumVARIANT