IADsContainer 인터페이스(iads.h)

IADsContainer 인터페이스를 사용하면 ADSI 컨테이너 개체가 포함된 ADSI 개체를 만들고 삭제하고 관리할 수 있습니다. 컨테이너 개체는 파일 시스템의 와 같은 계층적 디렉터리 트리를 나타내고 디렉터리 계층 구조를 구성합니다.

IADsContainer 인터페이스를 사용하여 포함된 개체를 열거하거나 수명 주기를 관리할 수 있습니다. 예를 들어 디렉터리 트리를 재귀적으로 탐색하는 것이 있습니다. ADSI 개체에서 IADsContainer 인터페이스를 쿼리하여 개체에 자식이 있는지 확인할 수 있습니다. 인터페이스가 지원되지 않는 경우 개체는 리프입니다. 그렇지 않으면 컨테이너입니다. 새로 찾은 컨테이너 개체에 대해 이 프로세스를 계속할 수 있습니다. 개체를 만들거나 복사하거나 삭제하려면 컨테이너 개체에 요청을 보내 작업을 수행합니다.

상속

IADsContainer 인터페이스는 IDispatch 인터페이스에서 상속됩니다. IADsContainer 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

IADsContainer 인터페이스에는 이러한 메서드가 있습니다.

 
IADsContainer::CopyHere

IADsContainer::CopyHere 메서드는 이 컨테이너에 지정된 디렉터리 개체의 복사본을 만듭니다.
IADsContainer::Create

지정된 스키마 클래스의 디렉터리 개체와 컨테이너에 지정된 이름을 만드는 요청을 설정합니다.
IADsContainer::D 삭제

이 컨테이너에서 지정된 디렉터리 개체를 삭제합니다.
IADsContainer::get__NewEnum

컨테이너에 대한 열거자 개체를 검색합니다.
IADsContainer::GetObject

컨테이너의 디렉터리 개체에 대한 인터페이스를 검색합니다.
IADsContainer::MoveHere

지정된 개체를 이 인터페이스를 구현하는 컨테이너로 이동합니다.

설명

개체가 컨테이너인지 확인하려면 개체의 IADsClass.Container 속성을 사용합니다.

GUID(또는 SID)를 사용하여 컨테이너 개체에 바인딩하는 경우 컨테이너 개체에서만 특정 작업을 수행할 수 있습니다. 이러한 작업에는 개체 특성 검사와 개체의 직할 자식 열거가 포함됩니다. 이러한 작업은 다음 코드 예제에 나와 있습니다.

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

다른 모든 작업( 즉, GetObject, 만들기, 삭제, CopyHereMoveHere )은 컨테이너의 GUID 표현에서 지원되지 않습니다. 예를 들어 다음 코드 예제의 마지막 줄에 오류가 발생합니다.

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

GUID(또는 SID)를 사용하는 바인딩은 오버헤드가 낮기 때문에 개체 내성 검사에 자주 사용되는 빠른 바인딩을 위한 것입니다.

GUID(또는 SID)를 사용하여 바인딩된 컨테이너의 이러한 메서드를 호출하려면 고유 이름을 사용하여 개체에 다시 바인딩합니다.

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

개체 GUID 표현에 대한 자세한 내용은 IADs.GUID를 참조하세요.

예제

다음 코드 예제에서는 ADSI 개체가 컨테이너인지 확인합니다.

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

다음 코드 예제에서는 ADSI 개체가 컨테이너인지 확인합니다.

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 iads.h

추가 정보

개체 만들기 및 삭제

IADs::get_GUID

IADsClass::get_Container

IADsNamespaces

IDispatch