Interface IADsContainer (iads.h)

A interface IADsContainer permite que um objeto de contêiner ADSI crie, exclua e gerencie objetos ADSI contidos. Objetos de contêiner representam árvores de diretório hierárquicas, como em um sistema de arquivos, e para organizar a hierarquia de diretório.

Você pode usar a interface IADsContainer para enumerar objetos contidos ou gerenciar seu ciclo de vida. Um exemplo seria navegar recursivamente em uma árvore de diretório. Ao consultar a interface IADsContainer em um objeto ADSI, você pode determinar se o objeto tem filhos. Se não houver suporte para a interface, o objeto será uma folha. Caso contrário, ele é um contêiner. Você pode continuar esse processo para os objetos de contêiner recém-encontrados. Para criar, copiar ou excluir um objeto, envie a solicitação para o objeto contêiner para executar a tarefa.

Herança

A interface IADsContainer herda da interface IDispatch . IADsContainer também tem esses tipos de membros:

Métodos

A interface IADsContainer tem esses métodos.

 
IADsContainer::CopyHere

O método IADsContainer::CopyHere cria uma cópia do objeto de diretório especificado neste contêiner.
IADsContainer::Create

Configura uma solicitação para criar um objeto de diretório da classe de esquema especificada e um determinado nome no contêiner.
IADsContainer::D elete

Exclui um objeto de diretório especificado desse contêiner.
IADsContainer::get__NewEnum

Recupera um objeto enumerador para o contêiner.
IADsContainer::GetObject

Recupera uma interface para um objeto de diretório no contêiner.
IADsContainer::MoveHere

Move um objeto especificado para o contêiner que implementa essa interface.

Comentários

Para determinar se um objeto é um contêiner, use a propriedade IADsClass.Container do objeto .

Ao associar a um objeto de contêiner usando seu GUID (ou SID), você só pode executar operações específicas no objeto contêiner. Essas operações incluem o exame dos atributos de objeto e a enumeração dos filhos imediatos do objeto. Essas operações são mostradas no exemplo de código a seguir.

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

Todas as outras operações, ou seja, GetObject, Create, Delete, CopyHere e MoveHere não têm suporte na representação GUID do contêiner. Por exemplo, a última linha do exemplo de código a seguir resultará em um erro.

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

A associação, usando GUID (ou SID), destina-se a baixa sobrecarga e, portanto, associações rápidas, que geralmente são usadas para introspecção de objeto.

Para chamar esses métodos do contêiner associado com seu GUID (ou SID), reassociado ao objeto usando seu nome diferenciado.

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

Para obter mais informações sobre a representação do GUID do objeto, consulte IADs.GUID.

Exemplos

O exemplo de código a seguir determina se um objeto ADSI é um contêiner.

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

O exemplo de código a seguir determina se um objeto ADSI é um contêiner.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho iads.h

Confira também

Criando e excluindo objetos

IADs::get_GUID

IADsClass::get_Container

IADsNamespaces

IDispatch