Condividi tramite


Interfaccia IADsContainer (iads.h)

L'interfaccia IADsContainer consente a un oggetto contenitore ADSI di creare, eliminare e gestire oggetti ADSI contenuti. Gli oggetti contenitore rappresentano alberi gerarchici delle directory, ad esempio in un file system, e per organizzare la gerarchia di directory.

È possibile usare l'interfaccia IADsContainer per enumerare gli oggetti contenuti o gestire il ciclo di vita. Un esempio potrebbe essere quello di spostarsi in modo ricorsivo in un albero di directory. Eseguendo una query sull'interfaccia IADsContainer su un oggetto ADSI, è possibile determinare se l'oggetto include elementi figlio. Se l'interfaccia non è supportata, l'oggetto è una foglia. In caso contrario, si tratta di un contenitore. È possibile continuare questo processo per gli oggetti contenitore appena trovati. Per creare, copiare o eliminare un oggetto, inviare la richiesta all'oggetto contenitore per eseguire l'attività.

Ereditarietà

L'interfaccia IADsContainer eredita dall'interfaccia IDispatch . IADsContainer include anche questi tipi di membri:

Metodi

L'interfaccia IADsContainer include questi metodi.

 
IADsContainer::CopyHere

Il metodo IADsContainer::CopyHere crea una copia dell'oggetto directory specificato in questo contenitore.
IADsContainer::Create

Configura una richiesta per creare un oggetto directory della classe dello schema specificata e un nome specificato nel contenitore.
IADsContainer::D elete

Elimina un oggetto directory specificato da questo contenitore.
IADsContainer::get__NewEnum

Recupera un oggetto enumeratore per il contenitore.
IADsContainer::GetObject

Recupera un'interfaccia per un oggetto directory nel contenitore.
IADsContainer::MoveHere

Sposta un oggetto specificato nel contenitore che implementa questa interfaccia.

Commenti

Per determinare se un oggetto è un contenitore, utilizzare la proprietà IADsClass.Container dell'oggetto .

Quando si esegue l'associazione a un oggetto contenitore usando il RELATIVO GUID (o SID), è possibile eseguire solo operazioni specifiche sull'oggetto contenitore. Queste operazioni includono l'esame degli attributi dell'oggetto e l'enumerazione degli elementi figlio immediati dell'oggetto. Queste operazioni sono illustrate nell'esempio di codice seguente.

Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
con.Filter = Array("user")
For Each item In con
    debug.print item.Name " &  " of " & item.Class
Next

Tutte le altre operazioni, ovvero GetObject, Create, Delete, CopyHere e MoveHere , non sono supportate nella rappresentazione GUID del contenitore. Ad esempio, l'ultima riga dell'esempio di codice seguente genererà un errore.

Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
Set obj = con.GetObject("user", "CN=Jeff Smith")

L'associazione, l'uso di GUID (o SID) è destinato a un sovraccarico ridotto e, pertanto, alle associazioni veloci, che vengono spesso usate per l'introspezione degli oggetti.

Per chiamare questi metodi del contenitore associato al RELATIVO GUID (o SID), riassociare all'oggetto usando il nome distinto.

Dim conGUID, conDN As IADsContainer
Dim obj As IADs
Set conGUID = GetObject("LDAP://svr/<GUID=xxxx>")
Set conDN=GetObject("LDAP://svr/" & conGUID.Get("distinguishedName"))
Set obj = conDN.GetObject("user", "CN=Jeff Smith")

Per altre informazioni sulla rappresentazione GUID dell'oggetto, vedere IADs.GUID.

Esempio

L'esempio di codice seguente determina se un oggetto ADSI è un contenitore.

Dim obj As IADs
Dim cls As IADsClass
On Error GoTo Cleanup

Set obj = GetObject("WinNT://myComputer,computer")
Set cls = GetObject(obj.Schema)
If (cls.Container = TRUE) Then
    MsgBox "The object is a container."
Else
    MsgBox "The object is a leaf."
End If

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

L'esempio di codice seguente determina se un oggetto ADSI è un contenitore.

IADs *pADs = NULL;
IADsClass *pCls = NULL;
HRESULT hr = S_OK;
BSTR bstr;

hr = ADsGetObject(L"WinNT://myComputer,computer", IID_IADs, (void**)&pADs);
if(FAILED(hr)){return;}

pADs->get_Schema(&bstr);
hr = ADsGetObject(bstr, IID_IADsClass, (void**)&pCls);
pADs->Release();
SysFreeString(bstr);

if(FAILED(hr)){return;}

VARIANT_BOOL isContainer;
pCls->get_Container(&isContainer);

if(isContainer) 
    printf("Object is a container.\n");
else
    printf("Object is not a container.\n");

pCls->Release();

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione iads.h

Vedi anche

Creazione ed eliminazione di oggetti

IADs::get_GUID

IADsClass::get_Container

IADsNamespaces

Idispatch