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 |