Método IADs::SetInfo (iads.h)

El método IADs::SetInfo guarda los valores de propiedad almacenados en caché del objeto ADSI en el almacén de directorios subyacente.

Sintaxis

HRESULT SetInfo();

Valor devuelto

Este método admite los valores devueltos estándar, incluidos S_OK para una operación correcta. Para obtener más información, consulta Códigos de error adsi.

Comentarios

Es importante destacar las diferencias entre los métodos IADs::P ut e IADs::SetInfo . El anterior establece (o modifica) valores de una propiedad determinada en la memoria caché de propiedades, mientras que este último propaga los cambios de la caché de propiedades en el almacén de directorios subyacente. Por lo tanto, los cambios de valor de propiedad realizados por IADs::P ut se perderán si se invoca IADs::GetInfo (o IADs::GetInfoEx) antes de llamar a IADs::SetInfo .

Dado que IADs::SetInfo envía datos entre redes, minimice el uso de este método. Esto reduce el número de viajes que realiza un cliente al servidor. Por ejemplo, debe confirmar todos o la mayoría de los cambios realizados en las propiedades de la memoria caché en el almacén persistente en un lote.

Esta guía solo pertenece a la relación de IADs::SetInfo con el método IADs::P ut , que difiere de la relación con el método IADs::P utEx .

En el ejemplo de código siguiente se muestra la relación recomendada entre IADs::P ut e IADs::SetInfo.

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

En el ejemplo de código siguiente se muestra lo que no se recomienda entre IADs::P ut e IADs::SetInfo.

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

Cuando se usa con IADs::P utEx, IADs::SetInfo pasa las solicitudes operativas especificadas por códigos de control, como ADS_PROPERTY_UPDATE o ADS_PROPERTY_CLEAR, al almacén de directorios subyacente.

Ejemplos

En el siguiente ejemplo de código de Visual Basic se usa el método IADs::SetInfo para guardar el valor de propiedad de un usuario en el directorio subyacente.

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

El siguiente ejemplo de código de C++ actualiza los valores de propiedad en la memoria caché de propiedades y confirma el cambio en el almacén de directorios mediante IADs::SetInfo. Para mayor brevedad, se omite la comprobación de errores.

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();

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado iads.h
Archivo DLL Activeds.dll

Consulte también

Iads

IADs::GetInfo

IADs::GetInfoEx

IADs::P ut

IADs::P utEx