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

O método IADs::SetInfo salva os valores de propriedade armazenados em cache do objeto ADSI no repositório de diretórios subjacente.

Sintaxe

HRESULT SetInfo();

Retornar valor

Esse método dá suporte aos valores retornados padrão, incluindo S_OK para uma operação bem-sucedida. Para obter mais informações, consulte Códigos de erro ADSI.

Comentários

É importante enfatizar as diferenças entre os métodos IADs::P ut e IADs::SetInfo . O primeiro define (ou modifica) valores de uma determinada propriedade no cache de propriedades, enquanto o último propaga as alterações do cache de propriedades para o repositório de diretórios subjacente. Portanto, todas as alterações de valor de propriedade feitas por IADs::P ut serão perdidas se IADs::GetInfo (ou IADs::GetInfoEx) for invocada antes que IADs::SetInfo seja chamado.

Como IADs::SetInfo envia dados entre redes, minimize o uso desse método. Isso reduz o número de viagens que um cliente faz ao servidor. Por exemplo, você deve confirmar todas ou a maioria das alterações nas propriedades do cache para o repositório persistente em um lote.

Essa diretriz pertence apenas à relação de IADs::SetInfo com o método IADs::P ut , que difere da relação com o método IADs::P utEx .

O exemplo de código a seguir ilustra a relação 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

O exemplo de código a seguir ilustra o que não é recomendado 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

Quando usado com IADs::P utEx, IADs::SetInfo passa as solicitações operacionais especificadas por códigos de controle, como ADS_PROPERTY_UPDATE ou ADS_PROPERTY_CLEAR, para o repositório de diretórios subjacente.

Exemplos

O exemplo de código do Visual Basic a seguir usa o método IADs::SetInfo para salvar o valor da propriedade de um usuário no diretório subjacente.

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

O exemplo de código C++ a seguir atualiza os valores de propriedade no cache de propriedades e confirma a alteração no repositório de diretórios usando IADs::SetInfo. Para resumir, a verificação de erros é omitida.

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 Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho iads.h
DLL Activeds.dll

Confira também

Iads

IADs::GetInfo

IADs::GetInfoEx

IADs::P ut

IADs::P utEx