Поделиться через


Методы свойств IADsContainer

Методы свойств интерфейса IADsContainer получают или задают свойства, описанные в следующей таблице. Дополнительные сведения и общие сведения о методах свойств см. в разделе Методы свойств интерфейса.

Свойства

Count

Извлекает количество элементов в контейнере. Если задан параметр Filter , функция Count возвращает только количество отфильтрованных элементов.

Тип доступа: только для чтения

Тип данных скрипта: LONG

// C++ method syntax
HRESULT get_Count(
  [out] LONG* plCount
);

Фильтр

Извлекает или задает фильтр, используемый для выбора классов объектов в заданном перечислении. Это массив вариантов, каждый элемент которого является именем класса схемы. Если параметр Filter не является пустым, перечислитель извлекает все объекты всех классов.

Тип доступа: чтение и запись

Тип данных скрипта: VARIANT

// C++ method syntax
HRESULT get_Filter(
  [out] VARIANT* pvFilter
);
HRESULT put_Filter(
  [in] VARIANT vFilter
);

Указания

Вариантный массив строк BSTR . Каждый элемент определяет имя свойства, найденного в определении схемы. Параметр vHints позволяет клиенту указать, какие атрибуты следует загружать для каждого перечисленного объекта. Такие данные можно использовать для оптимизации доступа к сети. Однако точная реализация зависит от поставщика и в настоящее время не используется поставщиком WinNT.

Тип доступа: чтение и запись

Тип данных скрипта: VARIANT

// C++ method syntax
HRESULT get_Hints(
  [out] VARIANT* pvHints
);
HRESULT put_Hints(
  [in] VARIANT vHints
);

Комментарии

Процессы перечисления в разделах IADsContainer::get__NewEnum и IADsContainer::get_Count выполняются для содержащихся в кэше объектов. Если контейнер содержит большое количество объектов, это может повлиять на производительность. Чтобы повысить производительность, отключите кэш, настройте соответствующий размер страницы и используйте интерфейс IDirectorySearch . По этой причине свойство get_Count не поддерживается в поставщике Microsoft LDAP.

Примеры

В следующем примере кода Visual Basic показано, как можно использовать методы свойств IADsContainer .

Dim cont As IADsContainer
Dim usr As IADsUser

On Error GoTo Cleanup
 
Set cont = GetObject("LDAP://OU=Sales, DC=Fabrikam, DC=COM")
cont.Hints = Array("adminDescription") ' Load this attribute. Optional.
Debug.Print cont.Get("adminDescription")

' Filter users.
cont.Filter = Array("user")

For Each usr In cont
  Debug.Print usr.Name
Next

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set cont = Nothing
    Set usr = Nothing

В следующем примере кода C++ показано, как можно использовать методы свойств IADsContainer . Для краткости проверка ошибок опущена.

IADsContainer *pCont;
IADs *pChild;
IADs *pADs;
 
HRESULT hr = ADsGetObject(L"LDAP://OU=Sales,DC=Fabrikam,DC=COM",
                          IID_IADsContainer, 
                          (void**)&pCont);

if(FAILED(hr)){goto Cleanup;}

LPWSTR pszArray[] = { L"adminDescription" };
DWORD dwNumber = sizeof(pszArray)/sizeof(LPWSTR);
hr = ADsBuildVarArrayStr( pszArray, dwNumber, &var);
if(FAILED(hr)){goto Cleanup;}

hr = pCont->put_Hints( var );
if(FAILED(hr)){goto Cleanup;}

VariantClear(&var);
 
hr = pCont->QueryInterface(IID_IADs, (void**)pADs);
if(FAILED(hr)){goto Cleanup;}
 
hr = pADs->Get(CComBSTR("adminDescription"), var);
 
LPWSTR pszUsers = {L"user"};
dwNumber = sizeof(pszUsers)/sizeof(LPWSTR);
hr = ADsBuildVarArrayStr(pszUsers, dwNumber, &var);
hr = pCont->put_Filter( var );
VariantClear(&var);
 
// Enumerate user objects in the container.
IEnumVARIANT *pEnum = NULL;
hr = ADsBuildEnumerator(pCont, &pEnum);
pCont->Release();    // Not required when users are enumerated.
 
ULONG lFetch;
VariantClear(&var);
while (SUCCEEDED(ADsEnumerateNext(pEnum, 1, &var, &lFetch)) && 
                      lFetch==1) {
    hr = V_DISPATCH(&var)->QueryInterface(IID_IADs, (void**)&pChild)
    if(SUCCEEDED(hr)) {
        BSTR bstrName;
        pChild->get_Name(&bstrName);
        printf("  %S\n", bstrName);
        SysFreeString(bstrName);
        pChild->Release();
    }
    VariantClear(&var);
}
Cleanup:
    if(pADs)
        pADs->Release();

    if(pCont)
        pCont->Release();

    if(pChild)
        pChild->Release();

    VariantClear(&var);

Требования

Требование Значение
Минимальная версия клиента
Windows Vista
Минимальная версия сервера
Windows Server 2008
Заголовок
Iads.h
DLL
Activeds.dll
IID
IID_IADsContainer определяется как 001677D0-FD16-11CE-ABC4-02608C9E7553

См. также раздел

IADsContainer

IDirectorySearch