Поделиться через


Метод IADs::SetInfo (iads.h)

Метод IADs::SetInfo сохраняет кэшированные значения свойств объекта ADSI в базовом хранилище каталогов.

Синтаксис

HRESULT SetInfo();

Возвращаемое значение

Этот метод поддерживает стандартные возвращаемые значения, включая S_OK для успешной операции. Дополнительные сведения см. в разделе Коды ошибок ADSI.

Комментарии

Важно подчеркнуть различия между методами IADs::P ut и IADs::SetInfo . Первый задает (или изменяет) значения заданного свойства в кэше свойств, а второй распространяет изменения из кэша свойств в базовое хранилище каталогов. Таким образом, любые изменения значений свойств, внесенные IADs::P ut , будут потеряны, если IADs::GetInfo (или IADs::GetInfoEx) вызывается перед вызовом IADs::SetInfo .

Так как IADs::SetInfo отправляет данные между сетями, сведите к минимуму использование этого метода. Это сокращает количество обращений клиента к серверу. Например, следует зафиксировать все или большинство изменений свойств из кэша в постоянное хранилище в одном пакете.

Это руководство относится только к связи IADs::SetInfo с методом IADs::P ut , который отличается от связи с методом IADs::P utEx .

В следующем примере кода показана рекомендуемая связь между IADs::P ut и IADs::SetInfo.

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

В следующем примере кода показано, что не рекомендуется использовать между IADs::P ut и IADs::SetInfo.

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

При использовании с IADs::P utExIADs::SetInfo передает операционные запросы, заданные кодами управления, такими как ADS_PROPERTY_UPDATE или ADS_PROPERTY_CLEAR, в базовое хранилище каталогов.

Примеры

В следующем примере кода Visual Basic используется метод IADs::SetInfo для сохранения значения свойства пользователя в базовом каталоге.

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

Следующий пример кода C++ обновляет значения свойств в кэше свойств и фиксирует изменение в хранилище каталогов с помощью IADs::SetInfo. Для краткости проверка ошибок опущена.

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

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header iads.h
DLL Activeds.dll

См. также раздел

IAD

IADs::GetInfo

IADs::GetInfoEx

IADs::P ut

IADs::P utEx