IDirectoryObject::SetObjectAttributes メソッド (iads.h)

IDirectoryObject::SetObjectAttributes メソッドは、ADS_ATTR_INFO構造体で定義されている 1 つ以上の指定されたオブジェクト属性のデータを変更します。

構文

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

パラメーター

[in] pAttributeEntries

変更する属性の配列を提供します。 各属性には、属性の名前、実行する操作、属性値 (該当する場合) が含まれます。 詳細については、ADS_ATTR_INFO構造体に 関するページを 参照してください。

[in] dwNumAttributes

変更する属性の数を指定します。 この値は 、pAttributeEntries 配列のサイズに対応している必要があります。

[out] pdwNumAttributesModified

SetObjectAttributes メソッドによって変更された属性の数を含む DWORD 変数へのポインターを提供します。

戻り値

このメソッドは、属性が正常に設定されたときにS_OKを含む、標準の戻り値を返します。

詳細およびその他の戻り値については、「 ADSI エラー コード」を参照してください。

解説

Active Directory (LDAP プロバイダー) では、 IDirectoryObject::SetObjectAttributes メソッドはトランザクション呼び出しです。 属性はすべてコミットまたは破棄されます。 他のディレクトリ プロバイダーは、呼び出しを処理できない場合があります。

Active Directory では、複数値属性で重複する値を使用できません。 ただし、 SetObjectAttributes を呼び出して Active Directory オブジェクトの複数値属性に重複する値を追加すると、 SetObjectAttributes 呼び出しは成功しますが、重複する値は無視されます。

同様に、 SetObjectAttributes を使用して Active Directory オブジェクトの複数値プロパティから 1 つ以上の値を削除した場合、指定した値の一部またはすべてが プロパティに設定されていない場合でも、操作は成功します。

次の 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
ヘッダー iads.h
[DLL] Activeds.dll

関連項目

ADSI エラー コード

ADS_ATTR_INFO

IDirectoryObject