Condividi tramite


Metodo IADs::SetInfo (iads.h)

Il metodo IADs::SetInfo salva i valori delle proprietà memorizzati nella cache dell'oggetto ADSI nell'archivio directory sottostante.

Sintassi

HRESULT SetInfo();

Valore restituito

Questo metodo supporta i valori restituiti standard, inclusi S_OK per un'operazione riuscita. Per altre informazioni, vedere Codici di errore ADSI.

Commenti

È importante sottolineare le differenze tra i metodi IADs::P ut e IADs::SetInfo. I valori precedenti (o modifica) di una determinata proprietà nella cache delle proprietà, mentre quest'ultima propaga le modifiche dalla cache delle proprietà nell'archivio directory sottostante. Pertanto, qualsiasi modifica del valore della proprietà apportata da IADs::P ut verrà persa se iADs: :GetInfo (o IADs::GetInfoEx) viene richiamato prima che venga chiamato IADs::SetInfo .

Poiché IADs::SetInfo invia dati tra reti, ridurre al minimo l'utilizzo di questo metodo. Ciò riduce il numero di viaggi che un client esegue nel server. Ad esempio, è necessario eseguire il commit di tutti o la maggior parte delle modifiche apportate alle proprietà dalla cache all'archivio permanente in un batch.

Questa linea guida riguarda solo la relazione di IADs::SetInfo con il metodo IADs::P ut , che differisce dalla relazione con il metodo IADs::P utEx .

Nell'esempio di codice seguente viene illustrata la relazione consigliata tra IADs::P ut e IADs::SetInfo.

Dim obj as IADs
 
obj.Put(prop1,val1)
obj.Put(prop2.val2)
obj.Put(prop3.val3)
obj.SetInfo

L'esempio di codice seguente illustra cosa non è consigliato tra IADs::P ut e IADs::SetInfo.

obj.Put(prop1,val1)
obj.SetInfo
obj.Put(prop2.val2)
obj.SetInfo
obj.Put(prop3.val3)
obj.SetInfo

Se usato con IADs::P utEx, IADs::SetInfo passa le richieste operative specificate dai codici di controllo, ad esempio ADS_PROPERTY_UPDATE o ADS_PROPERTY_CLEAR, all'archivio directory sottostante.

Esempio

Nell'esempio di codice Visual Basic seguente viene usato il metodo IADs::SetInfo per salvare il valore della proprietà di un utente nella directory sottostante.

Dim x as IADs
On Error GoTo Cleanup

Set x = GetObject("LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com")
'
' Update values in the cache.
'
x.Put "sn", "Smith"
x.Put "givenName", "Jeff"
x.Put "street", "1 Tanka Place"
x.Put "l", "Sammamish"
x.Put "st", "Washington"
'
' Commit changes to the directory.
x.SetInfo

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

Nell'esempio di codice C++ seguente vengono aggiornati i valori delle proprietà nella cache delle proprietà e viene eseguito il commit della modifica nell'archivio directory usando IADs::SetInfo. Per brevità, il controllo degli errori viene omesso.

IADs *pAds NULL;
VARIANT var;
HRESULT hr = S_OK;
LPWSTR path=L"LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com";
hr = ADsGetObject( path, IID_IADs, (void**) pADs);

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

VariantInit(&var);
// Update values in the cache.
V_BSTR(&var) = SysAllocString(L"Smith");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("sn"), var );
VariantClear(&var);
 
V_BSTR(&var) = SysAllocString(L"Jeff");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("givenName"), var );
VariantClear(&var);
 
V_BSTR(&var) = SysAllocString(L"1 Tanka Place");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("street"), var );
VariantClear(&var);
 
V_BSTR(&var) = SysAllocString(L"Sammamish");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("l"), var );
VariantClear(&var);
 
V_BSTR(&var) = SysAllocString(L"Washington");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("st"), var );
VariantClear(&var);
 
// Commit changes to the directory store.
hr = pADs->SetInfo();

if(pADs)
   pADs->Release();

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione iads.h
DLL Activeds.dll

Vedi anche

ID

ID::GetInfo

ID::GetInfoEx

ID::P ut

ID::P utEx