Функция 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 |
Header | adshlp.h |
Библиотека | Activeds.lib |
DLL | Activeds.dll |