Partager via


IADsContainer, méthodes de propriété

Les méthodes de propriété de l’interface IADsContainer obtiennent ou définissent les propriétés décrites dans le tableau suivant. Pour plus d’informations et une discussion générale sur les méthodes de propriété, consultez Méthodes de propriété d’interface.

Propriétés

Count

Récupère le nombre d’éléments dans le conteneur. Lorsque Filter est défini, Count retourne uniquement le nombre d’éléments filtrés.

Type d'accès : Lecture seule

Type de données de script : LONG

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

Filter

Récupère ou définit le filtre utilisé pour sélectionner des classes d’objets dans une énumération donnée. Il s’agit d’un tableau de variantes, dont chaque élément est le nom d’une classe de schéma. Si Filter n’est pas défini ou défini sur vide, tous les objets de toutes les classes sont récupérés par l’énumérateur.

Type d'accès : lecture/écriture

Type de données de script : VARIANT

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

Indicateurs

Tableau de variantes de chaînes BSTR . Chaque élément identifie le nom d’une propriété trouvée dans la définition de schéma. Le paramètre vHints permet au client d’indiquer les attributs à charger pour chaque objet énuméré. Ces données peuvent être utilisées pour optimiser l’accès réseau. Toutefois, l’implémentation exacte est spécifique au fournisseur et n’est actuellement pas utilisée par le fournisseur WinNT.

Type d'accès : lecture/écriture

Type de données de script : VARIANT

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

Notes

Les processus d’énumération sous IADsContainer::get__NewEnum et IADsContainer::get_Count sont exécutés sur les objets contenus dans le cache. Lorsqu’un conteneur contient un grand nombre d’objets, les performances peuvent être affectées. Pour améliorer les performances, désactivez le cache, configurez une taille de page appropriée et utilisez l’interface IDirectorySearch . Pour cette raison, la propriété get_Count n’est pas prise en charge dans le fournisseur MICROSOFT LDAP.

Exemples

L’exemple de code Visual Basic suivant montre comment les méthodes de propriété d’IADsContainer peuvent être utilisées.

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

L’exemple de code C++ suivant montre comment les méthodes de propriété d’IADsContainer peuvent être utilisées. Par souci de concision, la vérification des erreurs est omise.

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);

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
En-tête
Iads.h
DLL
Activeds.dll
IID
IID_IADsContainer est défini comme 001677D0-FD16-11CE-ABC4-02608C9E7553

Voir aussi

IADsContainer

IDirectorySearch