共用方式為


ADsBuildEnumerator 函式 (adshlp.h)

ADsBuildEnumerator 函式會為指定的 ADSI 容器物件建立列舉值物件。

語法

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

參數

[in] pADsContainer

類型: IADsContainer*

要列舉之物件的 IADsContainer 介面指標。

[out] ppEnumVariant

類型: IEnumVARIANT**

IEnumVARIANT 介面指標的指標,該指標會接收為指定之容器物件建立的列舉值物件。

傳回值

類型: HRESULT

這個方法支持標準的 HRESULT 傳回值,包括成功作業 S_OK 。 如需其他傳回值的詳細資訊,請參閱 ADSI 錯誤碼

備註

ADsBuildEnumerator 協助程式函式會包裝用來擷取列舉值物件上 IEnumVARIANT 介面的呼叫。

列舉容器中的可用物件

  1. 呼叫 ADsBuildEnumerator 函式,以建立將列舉容器內容的 IEnumVARIANT 物件。
  2. 視需要呼叫 ADsEnumerateNext 函式,以從列舉值物件擷取專案。
  3. 呼叫 ADSFreeEnumerator 函式,以在不再需要列舉值物件時釋放列舉值物件。
如果伺服器支援分頁搜尋,而且用戶端已指定超過伺服器允許的最大搜尋結果的頁面大小, ADsBuildEnumerator 函 式會將錯誤和結果從伺服器轉送給使用者。

範例

下列程式代碼範例示範如何使用 ADsBuildEnumeratorADsEnumerateNextADSFreeEnumerator 函式來列舉容器的內容。

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