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
Library Activeds.lib
DLL Activeds.dll

另请参阅

ADSI 错误代码

ADSI 函数

ADsEnumerateNext

ADsFreeEnumerator

IADsContainer

IEnumVARIANT