Compartir a través de


Interfaz IADsContainer (iads.h)

La interfaz IADsContainer permite que un objeto contenedor ADSI cree, elimine y administre objetos ADSI contenidos. Los objetos de contenedor representan árboles de directorio jerárquicos, como en un sistema de archivos, y para organizar la jerarquía de directorios.

Puede usar la interfaz IADsContainer para enumerar objetos contenidos o administrar su ciclo de vida. Un ejemplo sería navegar recursivamente por un árbol de directorios. Al consultar la interfaz IADsContainer en un objeto ADSI, puede determinar si el objeto tiene elementos secundarios. Si no se admite la interfaz, el objeto es una hoja. De lo contrario, es un contenedor. Puede continuar este proceso para los objetos de contenedor recién encontrados. Para crear, copiar o eliminar un objeto, envíe la solicitud al objeto contenedor para realizar la tarea.

Herencia

La interfaz IADsContainer hereda de la interfaz IDispatch . IADsContainer también tiene estos tipos de miembros:

Métodos

La interfaz IADsContainer tiene estos métodos.

 
IADsContainer::CopyHere

El método IADsContainer::CopyHere crea una copia del objeto de directorio especificado en este contenedor.
IADsContainer::Create

Configura una solicitud para crear un objeto de directorio de la clase de esquema especificada y un nombre determinado en el contenedor.
IADsContainer::D elete

Elimina un objeto de directorio especificado de este contenedor.
IADsContainer::get__NewEnum

Recupera un objeto enumerador para el contenedor.
IADsContainer::GetObject

Recupera una interfaz para un objeto de directorio en el contenedor.
IADsContainer::MoveHere

Mueve un objeto especificado al contenedor que implementa esta interfaz.

Comentarios

Para determinar si un objeto es un contenedor, use la propiedad IADsClass.Container del objeto .

Cuando se enlaza a un objeto contenedor mediante su GUID (o SID), solo puede realizar operaciones específicas en el objeto contenedor. Estas operaciones incluyen el examen de los atributos de objeto y la enumeración de los elementos secundarios inmediatos del objeto. Estas operaciones se muestran en el ejemplo de código siguiente.

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 las demás operaciones, es decir, GetObject, Create, Delete, CopyHere y MoveHere no se admiten en la representación GUID del contenedor. Por ejemplo, la última línea del ejemplo de código siguiente producirá un error.

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

El enlace, mediante GUID (o SID), está pensado para una sobrecarga baja y, por lo tanto, enlaces rápidos, que a menudo se usan para la introspección de objetos.

Para llamar a estos métodos del contenedor enlazado con su GUID (o SID), vuelva a enlazar al objeto con su nombre distintivo.

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 obtener más información sobre la representación guid del objeto, vea IADs.GUID.

Ejemplos

En el ejemplo de código siguiente se determina si un objeto ADSI es un contenedor.

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

En el ejemplo de código siguiente se determina si un objeto ADSI es un contenedor.

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 Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado iads.h

Consulte también

Crear y eliminar objetos

IADs::get_GUID

IADsClass::get_Container

IADsNamespaces

IDispatch