IADs::Get 메서드(iads.h)

IADs::Get 메서드는 속성 캐시에서 지정된 이름의 속성을 검색합니다. 속성은 단일 값 또는 다중값일 수 있습니다. 속성 값은 단일 값 속성의 변형 또는 여러 값을 허용하는 속성의 Variant 배열( VARIANT 또는 바이트)로 표시됩니다.

구문

HRESULT Get(
  [in]  BSTR    bstrName,
  [out] VARIANT *pvProp
);

매개 변수

[in] bstrName

속성 이름을 지정하는 BSTR 을 포함합니다.

[out] pvProp

속성 값을 받는 VARIANT 에 대한 포인터입니다. 다중값 속성의 경우 속성이 이진 형식이 아닌 한 pvPropVARIANT의 변형 배열입니다. 이 후자의 경우 pvProp 은 바이트(VT_U1 또는 VT_ARRAY)의 변형 배열입니다. 개체를 참조하는 속성의 경우 pvProp 은 참조되는 개체에 대한 VT_DISPATCH 포인터입니다.

반환 값

이 메서드는 표준 반환 값과 다음을 지원합니다.

자세한 내용은 ADSI 오류 코드를 참조하세요.

설명

IADs::Get 메서드를 사용하려면 호출자가 단일 및 다중값 속성 값을 다르게 처리해야 합니다. 따라서 관심 있는 속성이 단일 또는 다중 값임을 알고 있는 경우 IADs::Get 메서드를 사용하여 속성 값을 검색합니다. 다음 코드 예제에서는 호출자로서 이 메서드를 호출할 때 단일 및 다중값 속성을 처리하는 방법을 보여 있습니다.

속성이 초기화되지 않은 경우 이 메서드를 호출하면 IADs::GetInfo 메서드에 대한 암시적 호출이 호출됩니다. 그러면 기본 디렉터리에서 로드되어 캐시에 설정되지 않은 지원되는 속성의 값이 저장됩니다. IAD::Get에 대한 후속 호출은 캐시의 속성 값만 처리합니다. IAD::GetInfo에 대한 암시적 및 명시적 호출의 동작에 대한 자세한 내용은 IADs::GetInfo를 참조하세요.

IADs::GetEx를 사용하여 속성 캐시에서 속성 값을 검색할 수도 있습니다. 그러나 값은 단일 값인지 다중 값인지에 관계없이 VARIANT의 변형 배열로 반환됩니다. 즉, ADSI는 반환된 속성 값을 일관된 데이터 형식으로 패키지하려고 시도합니다. 이렇게 하면 반환된 데이터에 단일 또는 여러 값이 있는지 확실하지 않은 경우 호출자로서 데이터 형식의 유효성을 검사하는 작업이 절약됩니다.

예제

다음 코드 예제에서는 IADs::Get을 사용하여 개체에 대한 보안 설명자를 검색합니다.

Dim x As IADs
Dim Desc As IADsSecurityDescriptor
On Error GoTo ErrTest:
 
Set x = GetObject("LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com")
 
' Single-valued properties.
Debug.Print "Home Phone Number is: " & x.Get("homePhone")
 
' Some property values represents other ADSI objects. 
' Consult your provider documentation.
Set Desc = x.Get("ntSecurityDescriptor")
 
' Multi-valued property, assuming that multiple values were
' assigned to the "otherHomePhone" properties. Caller must 
' enumerate all the available values.
Debug.Print "Other Phone Numbers are: "
otherNumbers = x.Get("otherHomePhone")
For Each homeNum In otherNumbers
  Debug.Print homeNum
Next
 
Exit Sub
 
ErrTest:
  Debug.Print Hex(Err.Number)
  Set x = Nothing
  Set Desc = Nothing

다음 코드 예제에서는 IADs::Get 및 IADs::P ut을 사용하여 이진 데이터의 속성 값을 사용하는 방법을 보여 줍니다.

Dim oTarget As IADs
Dim Octet(5) As Byte
Dim MultiOctet(2) As Variant
Dim i As Integer, j As Integer

On Error GoTo Cleanup
 
' Set up MultiOctetString.
For i = 0 To 2
    For j = 0 To 5
        Octet(j) = CByte(i * j)
    Next j
    MultiOctet(i) = Octet
Next i
 
' Bind to the object and set MultiOctetString.
Set oTarget=GetObject("LDAP://CN=SomeUser,CN=Users,DC=Fabrikam, DC=COM")
oTarget.Put "multiOctetString", MultiOctet
oTarget.SetInfo
 
Dim GetOctet As Variant
Dim Temp As Variant
 
' Read back and print MultiOctetString.
GetOctet = oTarget.Get("multiOctetString")
For i = LBound(GetOctet) To UBound(GetOctet)
    Temp = GetOctet(i)
    For j = LBound(Temp) To UBound(Temp)
        Debug.Print Temp(j)
    Next j
    Debug.Print "----"
Next i

Exit Sub

Cleanup:
   MsgBox("An error has occurred. " & Err.Number)
   Set oTarget = Nothing

다음 코드 예제에서는 IADs::Get을 사용하여 개체의 선택적 속성 값을 검색하는 방법을 보여 줍니다.

<HTML>
<head><title></title></head>

<body>
<%
Dim x 
 
On error resume next
Set x = GetObject("WinNT://Fabrikam/Administrator")
Response.Write "Object Name: " & x.Name & "<br>"
Response.Write "Object Class: " & x.Class & "<br>"
 
' Get optional property values of this object.
Set cls = GetObject(x.Schema)

For Each op In cls.OptionalProperties
   v = obj.Get(op)
   if err.Number = 0 then
       Response.Write "Optional Property: " & op & "=" & v & "<br>"
   end if
Next
%>

</body>
</html>

다음 코드 예제에서는 IADs::Get을 사용하여 단일 및 여러 값의 특성을 읽습니다.

HRESULT hr;
IADs *pUsr=NULL;
 
CoInitialize(NULL);
 
///////////////////////////////
// Bind to a directory object.
///////////////////////////////
hr = ADsGetObject(L"WinNT://Fabrikam/Administrator,user", IID_IADs, (void**) &pUsr );
if ( !SUCCEEDED(hr) ) { return hr; }
 
//////////////////////////////////
// Get a single-valued attribute.
//////////////////////////////////
VARIANT var;
VariantInit(&var);
 
hr = pUsr->Get(CComBSTR("FullName"), &var );
if ( SUCCEEDED(hr) )
{
    printf("FullName: %S\n", V_BSTR(&var) );
    VariantClear(&var);
}
 
if ( pUsr )
{
    pUsr->Release();
}
 
///////////////////////////////////////////////////////
// Get a multi-valued attribute from a service object.
///////////////////////////////////////////////////////
IADs *pSvc = NULL;
 
hr = ADsGetObject(L"WinNT://Fabrikam/Account/Browser,service", IID_IADs, (void**) &pSvc );
if ( !SUCCEEDED(hr) )
{
    return hr;
}
 
hr = pSvc->Get(CComBSTR("Dependencies"), &var );
if ( SUCCEEDED(hr) )
{
    LONG lstart, lend;
    SAFEARRAY *sa = V_ARRAY( &var );
    VARIANT varItem;
 
    // Get the lower and upper bound.
    hr = SafeArrayGetLBound( sa, 1, &lstart );
    hr = SafeArrayGetUBound( sa, 1, &lend );
 
    // Iterate and print the content.
    VariantInit(&varItem);
    printf("Getting service dependencies using IADs :\n");
    for ( long idx=lstart; idx <= lend; idx++ )
    {
        hr = SafeArrayGetElement( sa, &idx, &varItem );
        printf("%S ", V_BSTR(&varItem));
        VariantClear(&varItem);
    }
    printf("\n");
 
    VariantClear(&var);
}
 
// Cleanup.
if ( pSvc )
{
    pSvc->Release();
}

요구 사항

   
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 iads.h
DLL Activeds.dll

참고 항목

IAD

IADs::GetEx

IADs::GetInfo

IADs::P ut

IADs::P utEx

속성 캐시