IADs::Metode GetInfo (iads.h)

Metode IADs::GetInfo dimuat ke dalam nilai cache properti dari properti yang didukung objek ADSI ini dari penyimpanan direktori yang mendasar.

Sintaks

HRESULT GetInfo();

Mengembalikan nilai

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

Untuk informasi selengkapnya, lihat Kode Kesalahan ADSI.

Keterangan

Fungsi IADs::GetInfo dipanggil untuk menginisialisasi atau merefresh cache properti. Ini mirip dengan mendapatkan nilai properti tersebut dari properti yang didukung dari penyimpanan direktori yang mendasar.

Cache properti yang tidak diinisialisasi belum tentu kosong. Panggil IAD::P ut atau IADs::P utEx untuk menempatkan nilai ke dalam cache properti untuk properti yang didukung dan cache tetap tidak diinisialisasi.

Panggilan eksplisit ke IAD::GetInfo memuat atau memuat ulang seluruh cache properti, menimpa semua nilai properti yang di-cache. Tetapi panggilan implisit hanya memuat properti yang tidak diatur dalam cache. Selalu panggil IAD::GetInfo secara eksplisit untuk mengambil nilai properti terbaru dari objek ADSI.

Karena panggilan eksplisit ke IAD::GetInfo menimpa semua nilai dalam cache properti, setiap perubahan yang dilakukan pada cache akan hilang jika IAD::SetInfo tidak dipanggil sebelum IAD::GetInfo.

Untuk objek kontainer ADSI, IAD::GetInfo hanya menyimpan nilai properti kontainer, tetapi bukan objek turunan.

Penting untuk menekankan perbedaan antara metode IADs::Get dan IADs::GetInfo . Yang pertama mengembalikan nilai properti tertentu dari cache properti sedangkan yang terakhir memuat semua nilai properti yang didukung ke dalam cache properti dari penyimpanan direktori yang mendasar.

Contoh kode berikut mengilustrasikan perbedaan antara metode IADs::Get dan IADs::GetInfo .

Set x = GetObject("LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com")
                                     ' The first IADs::Get calls
                                     ' GetInfo implicitly.
Debug.Print x.Get("homePhone")       ' Assume value is '999-9999'. 
x.Put "homePhone", "868-4449"        ' Put with no commit(SetInfo)
Debug.Print x.Get("homePhone")       ' Value='868-4449' from the cache.
x.GetInfo                            ' Refresh the cache, get the data 
                                     ' from the directory.
Debug.Print x.Get("homePhone")       ' Value will be '999-9999'.

Untuk peningkatan performa, panggil IAD secara eksplisit ::GetInfoEx untuk me-refresh properti tertentu. Selain itu, IADs::GetInfoEx harus dipanggil alih-alih IAD::GetInfo jika nilai properti operasional objek harus diakses. Fungsi ini menimpa nilai yang sebelumnya di-cache dari properti yang ditentukan.

Contoh

Contoh kode berikut menggunakan objek komputer yang dilayani oleh penyedia WinNT. Properti yang didukung termasuk Pemilik ("Pemilik"), OperatingSystem ("Windows NT"), OperatingSystemVersion ("4.0"), Divisi ("Fabrikam"), ProcessorCount ("Uniprococessor Free"), Prosesor ("x86 Family 6 Model 5 Stepping 1"). Nilai default ditampilkan dalam tanda kurung.

Dim pList As IADsPropertyList
Dim pEntry As IADsPropertyEntry
Dim pValue As IADsPropertyValue

On Error GoTo Cleanup
 
Set pList = GetObject("WinNT://localhost,computer")
 
' pList now represents an uninitialized empty property cache.
pList.Put "Owner", "JeffSmith"  ' Property cache remains uninitialized,
                               ' but with one property value.
count = pList.PropertyCount  ' count = 1.
MsgBox "Number of property found in the property cache: " & count
 
v = pList.Get("Division")   ' pList.GetInfo is called implicitly
ShowPropertyCache           ' This will display "JeffSmith" for Owner,
                            ' "Fabrikam" for Division, "Windows NT" for
                            ' OperatingSystem, and so on.
 
pList.GetInfo                ' Refreshes the entire cache, overwriting 
                             ' "JeffSmith" for the Owner property.
ShowPropertyCache            ' This will display "Owner" for Owner,
                             ' "Fabrikam" for Division, "Windows NT" for
                             ' OperatingSystem, and so on.

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set pList = Nothing
    Set pEntry = Nothing
    Set pValue = Nothing

 
Private Sub ShowPropertyCache()
    For I = 0 To pList.PropertyCount-1
       Set pEntry = pList.Item(I)
       Debug.Print pEntry.Name
       For Each v In pEntry.Values
           Set pValue = v
           Debug.Print "   " & pvalue.CaseIgnoreString
       Next
    Next
End Sub

Contoh kode berikut adalah skrip sisi klien yang mengilustrasikan efek IAD::Metode GetInfo . Properti yang didukung termasuk Pemilik ("Pemilik"), OperatingSystem ("Windows NT"), OperatingSystemVersion ("4.0"), Divisi ("Fabrikam"), ProcessorCount ("Uniprococessor Free"), Prosesor ("x86 Family 6 Model 5 Stepping 1"). Nilai default ditampilkan dalam tanda kurung.

<html>
<body>
 <table>
    <tr>
       <td>Owner:</td>
       <td><input type=text name=txtOwner></td>
    </tr>
    <tr>
       <td>Operating System:</td>
       <td><input type=text name=txtOS></td>
    </tr>
    <tr>
       <td>Operating System Version:</td>
       <td><input type=text name=txtOSV></td>
    </tr>
    <tr>
       <td>Division:</td>
       <td><input type=text name=txtDiv></td>
    </tr>
 </table>

 <input type=button onClick = "showGetInfo()">
</body>

<script language="vbscript">
Dim pList 

sub showGetInfo()
  Set oFac = CreateObject("ADsFactory")
  path = "WinNT://Fabrikam"
  ADS_SECURE_AUTH = 1
  On Error Resume Next

' Browser security requires enabled/Prompt for "Initialize and 
' script ActiveX Controls not marked as safe"
  Set pList=oFac.OpenDSObject(path,vbNullString,vbNullString,ADS_SECURE_AUTH)
   
  ' pList now represents an uninitialized empty property cache
  pList.Put "Owner" "JeffSmith"  ' Property cache remain uninitialized
                                 ' but with one property value.
   
  v = pList.Get("Division")   ' pList.GetInfo is called implicitly
  ShowPropertyCache           ' This will display "JeffSmith" for Owner,
                              ' "Fabrikam" for Division, "Windows NT"
                              ' for OperatingSystem, and so on.
 
  pList.GetInfo                ' Refreshes entire cache, overwriting 
                               ' "JeffSmith" for the Owner property.
  ShowPropertyCache            ' This will display "Owner" for Owner,
                               ' "Fabrikam" for Division, "Windows NT"
                               ' for OperatingSystem, and so on.
end sub

sub ShowPropertyCache()
  txtOwner.value = pList.Get("Owner")
  txtDiv.value = pList.Get("Division")
  txtOS.Value = pList.Get("OperatingSystem")
  txtOSV.value = pList.Get("OperatingSystemVersion")
end sub
</script>

</html>

Contoh kode berikut menyoroti efek Get dan GetInfo. Untuk keringkasan, pemeriksaan kesalahan dihilangkan.

IADs *pADs;
IADsPropertyList *pList;
BSTR bstr;
VARIANT var;
HRESULT hr;
 
hr = ADsGetObject(L"WinNT://somecomputer,computer",
                  IID_IADsPropertyList,
                  (void**)&pList);

if(!(hr==S_OK)){return hr;}

VariantInit(&var);
 
// Get the number of property entries, should be zero.
long pCount;      
hr = pList->get_PropertyCount(&pCount);
printf("    prop count = %d\n",pCount);     // 0 for empty cache.
 
hr = pList->QueryInterface(IID_IADs, (void**)&pADs);
 
 
// Set "Owner=JeffSmith" in the property cache.
V_BSTR(&var) = SysAllocString(L"JeffSmith");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("Owner"), var);
VariantClear(&var);
 
// This time the number of property entries should read one (1).
hr = pList->get_PropertyCount(&pCount);
printf("    prop count = %d\n",pCount);    // 1 for what was set.
 
// The following Get invokes GetInfo implicitly, but 
// the cache (that is, "Owner=JeffSmith") remains intact.
hr = pADs->Get(CComBSTR("Division"), &var);  
printf("    division   = %S\n", V_BSTR(&var));
VariantClear(&var);
 
hr = pADs->Get(CComBSTR("Owner"), &var);
printf("    owner      = %S\n", V_BSTR(&var));  // Owner = JeffSmith
VariantClear(&var);
 
// The following GetInfo call refreshes the entire prop cache.
// Now Owner is no longer "JeffSmith", but the value stored in the
// persistent store, for example, "BenSmith".
hr = pADs->GetInfo();
 
hr = pADs->Get(CComBSTR("Owner"), &var);
printf("    owner      = %S\n", V_BSTR(&var));  // Owner = BenSmith
VariantClear(&var);
 
// ...

if(pADs)
   pADs->Release();

if(pList)
   pList->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

IAD::Get

IADs::GetEx

IADs::GetInfoEx

Singgahan Properti