Bagikan melalui


Fungsi ADsBuildEnumerator (adshlp.h)

Fungsi ADsBuildEnumerator membuat objek enumerator untuk objek kontainer ADSI yang ditentukan.

Sintaks

HRESULT ADsBuildEnumerator(
  [in]  IADsContainer *pADsContainer,
  [out] IEnumVARIANT  **ppEnumVariant
);

Parameter

[in] pADsContainer

Jenis: IADsContainer*

Arahkan ke antarmuka IADsContainer untuk menghitung objek.

[out] ppEnumVariant

Jenis: IEnumVARIANT**

Penunjuk ke penunjuk antarmuka IEnumVARIANT yang menerima objek enumerator yang dibuat untuk objek kontainer yang ditentukan.

Nilai kembali

Jenis: HRESULT

Metode ini mendukung nilai pengembalian HRESULT standar, termasuk S_OK untuk operasi yang berhasil. Untuk informasi selengkapnya tentang nilai pengembalian lainnya, lihat Kode Kesalahan ADSI.

Keterangan

Fungsi pembantu ADsBuildEnumerator membungkus panggilan yang digunakan untuk mengambil antarmuka IEnumVARIANT pada objek enumerator.

Untuk menghitung objek yang tersedia dalam kontainer

  1. Panggil fungsi ADsBuildEnumerator untuk membuat objek IEnumVARIANT yang akan menghitung konten kontainer.
  2. Panggil fungsi ADsEnumerateNext sebanyak yang diperlukan untuk mengambil item dari objek enumerator.
  3. Panggil fungsi ADSFreeEnumerator untuk merilis objek enumerator saat tidak lagi diperlukan.
Jika server mendukung pencarian halaman dan klien telah menentukan ukuran halaman yang melebihi hasil pencarian maksimum yang diizinkan oleh server, fungsi ADsBuildEnumerator akan meneruskan kesalahan dan hasil dari server ke pengguna.

Contoh

Contoh kode berikut menunjukkan bagaimana fungsi ADsBuildEnumerator, ADsEnumerateNext, dan ADSFreeEnumerator dapat digunakan untuk menghitung konten kontainer.

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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header adshlp.h
Pustaka Activeds.lib
DLL Activeds.dll

Lihat juga

Kode Kesalahan ADSI

Fungsi ADSI

ADsEnumerateNext

ADsFreeEnumerator

IADsContainer

IEnumVARIANT