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 |