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 |