Метод IDirectoryObject::SetObjectAttributes (iads.h)

Метод IDirectoryObject::SetObjectAttributes изменяет данные в одном или нескольких указанных атрибутах объекта, определенных в структуре ADS_ATTR_INFO .

Синтаксис

HRESULT SetObjectAttributes(
  [in]  PADS_ATTR_INFO pAttributeEntries,
  [in]  DWORD          dwNumAttributes,
  [out] DWORD          *pdwNumAttributesModified
);

Параметры

[in] pAttributeEntries

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

[in] dwNumAttributes

Предоставляет количество изменяемых атрибутов. Это значение должно соответствовать размеру массива pAttributeEntries .

[out] pdwNumAttributesModified

Предоставляет указатель на переменную DWORD , содержащую количество атрибутов, измененных методом SetObjectAttributes .

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

Этот метод возвращает стандартные возвращаемые значения, в том числе S_OK при успешной настройке атрибутов.

Дополнительные сведения и другие возвращаемые значения см. в разделе Коды ошибок ADSI.

Комментарии

В Active Directory (поставщик LDAP) метод IDirectoryObject::SetObjectAttributes является транзакционным вызовом. Атрибуты либо фиксируются, либо удаляются. Другие поставщики каталогов могут не выполнять транзакции по вызову.

Active Directory не разрешает повторяющиеся значения для многозначного атрибута. Однако при вызове SetObjectAttributes для добавления повторяющегося значения к атрибуту с несколькими значениями объекта Active Directory вызов SetObjectAttributes завершается успешно, но повторяющееся значение игнорируется.

Аналогичным образом, если вы используете SetObjectAttributes для удаления одного или нескольких значений из свойства с несколькими значениями объекта Active Directory, операция будет выполнена успешно, даже если для свойства не задано любое или все указанные значения.

Примеры

В следующем примере кода C++ атрибут sn объекта пользователя задает значение Price в виде строки без учета регистра.

HRESULT hr;
IDirectoryObject *pDirObject=NULL;
DWORD  dwReturn;
ADSVALUE  snValue;
ADS_ATTR_INFO attrInfo[] = { {L"sn",ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, &snValue, 1} };
DWORD dwAttrs = sizeof(attrInfo)/sizeof(ADS_ATTR_INFO); 
 
snValue.dwType=ADSTYPE_CASE_IGNORE_STRING;
snValue.CaseIgnoreString = L"Price";
 
hr = ADsGetObject(L"LDAP://CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=com",
        IID_IDirectoryObject, 
        (void**) &pDirObject );
 
if ( SUCCEEDED(hr) )
{
    hr = pDirObject->SetObjectAttributes(attrInfo, dwAttrs, &dwReturn);

    pDirObject->Release();
}

Требования

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

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

Коды ошибок ADSI

ADS_ATTR_INFO

IDirectoryObject