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 接口的调用。
枚举容器中的可用对象
- 调用 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 |
Library | Activeds.lib |
DLL | Activeds.dll |