IADs::Dapatkan metode (iads.h)

Metode IADs::Get mengambil properti dari nama tertentu dari cache properti. Properti dapat bernilai tunggal, atau multinilai. Nilai properti direpresentasikan sebagai varian untuk properti bernilai tunggal atau array varian ( dari VARIAN atau byte) untuk properti yang memungkinkan beberapa nilai.

Sintaks

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

Parameter

[in] bstrName

Berisi BSTR yang menentukan nama properti.

[out] pvProp

Penunjuk ke VARIAN yang menerima nilai properti . Untuk properti multinilai, pvProp adalah array varian VARIAN, kecuali properti adalah jenis biner. Dalam kasus terakhir ini, pvProp adalah array varian byte (VT_U1 atau VT_ARRAY). Untuk properti yang mengacu pada objek, pvProp adalah penunjuk VT_DISPATCH ke objek yang dimaksud.

Menampilkan nilai

Metode ini mendukung nilai pengembalian standar, serta yang berikut ini.

Untuk informasi selengkapnya, lihat Kode Kesalahan ADSI.

Keterangan

Metode IADs::Get mengharuskan pemanggil untuk menangani nilai properti tunggal dan multinilai secara berbeda. Dengan demikian, jika Anda tahu bahwa properti yang diminati adalah tunggal atau multinilai, gunakan metode IADs::Get untuk mengambil nilai properti. Contoh kode berikut menunjukkan bagaimana Anda, sebagai pemanggil, dapat menangani properti tunggal dan multinilai saat memanggil metode ini.

Ketika properti tidak diinisialisasi, memanggil metode ini memanggil panggilan implisit ke metode IADs::GetInfo . Ini dimuat dari direktori yang mendasar menyimpan nilai properti yang didukung yang belum diatur dalam cache. Setiap panggilan berikutnya ke IAD::Dapatkan kesepakatan dengan nilai properti dalam cache saja. Untuk informasi selengkapnya tentang perilaku panggilan implisit dan eksplisit ke IAD::GetInfo, lihat IADs::GetInfo.

Anda juga dapat menggunakan IAD::GetEx untuk mengambil nilai properti dari cache properti. Namun, nilai dikembalikan sebagai array varian VARIAN, terlepas dari apakah nilainya bernilai tunggal atau multinilai. Artinya, ADSI mencoba mengemas nilai properti yang dikembalikan dalam format data yang konsisten. Ini menghemat Anda, sebagai penelepon, upaya memvalidasi jenis data ketika tidak yakin bahwa data yang dikembalikan memiliki satu atau beberapa nilai.

Contoh

Contoh kode berikut mengambil pendeskripsi keamanan untuk objek menggunakan IAD::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

Contoh kode berikut menunjukkan cara bekerja dengan nilai properti data biner menggunakan IAD::Get dan 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

Contoh kode berikut menunjukkan cara mengambil nilai properti opsional objek menggunakan IAD::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>

Contoh kode berikut membaca atribut dengan satu dan beberapa nilai menggunakan IAD::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();
}

Persyaratan

   
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header iads.h
DLL Activeds.dll

Lihat juga

IAD

IADs::GetEx

IADs::GetInfo

IAD::P ut

IAD::P utEx

Singgahan Properti