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 |