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 |