다음을 통해 공유


IADs::P utEx 메서드(iads.h)

IADs::P utEx 메서드는 ADSI 특성 캐시의 특성 값을 수정합니다. 예를 들어 여러 값을 허용하는 속성의 경우 기존 값 집합에 추가 값을 추가하거나, 집합의 값을 수정하거나, 집합에서 지정된 값을 제거하거나, 집합에서 값을 삭제할 수 있습니다.

구문

HRESULT PutEx(
  [in] long    lnControlCode,
  [in] BSTR    bstrName,
  [in] VARIANT vProp
);

매개 변수

[in] lnControlCode

수정 모드를 나타내는 제어 코드: 추가, 바꾸기, 제거 및 삭제. 자세한 내용과 값 목록은 ADS_PROPERTY_OPERATION_ENUM 참조하세요.

[in] bstrName

속성 이름을 지정하는 BSTR 을 포함합니다.

[in] vProp

속성의 새 값 또는 값을 포함하는 VARIANT 배열을 포함합니다. 단일 값 속성은 단일 요소가 있는 배열로 표시됩니다. InControlCodeADS_PROPERTY_CLEAR 설정된 경우 vProp에서 지정한 속성의 값은 관련이 없습니다.

반환 값

이 메서드는 표준 반환 값과 다음을 지원합니다.

자세한 내용은 ADSI 오류 코드를 참조하세요.

설명

PutEx 는 일반적으로 다중 값 특성에 대한 값을 설정하는 데 사용됩니다. PutEx를 사용하는 IADs::P ut 메서드와 달리 특성 값을 수정하기 전에 가져올 필요는 없습니다. 그러나 PutEx는 ADSI 속성 캐시에 포함된 특성 값만 변경하므로 디렉터리에 변경 내용을 커밋하려면 각 PutEx 호출 후 IADs::SetInfo를 사용해야 합니다.

PutEx 를 사용하면 ADS_PROPERTY_APPEND 사용하여 다중 값 특성의 기존 값 집합에 값을 추가할 있습니다. 다중 값 특성에 값을 업데이트, 추가 또는 삭제하는 경우 배열을 사용해야 합니다.

Active Directory는 다중값 특성에 중복 값을 허용하지 않습니다. PutEx를 호출하여 Active Directory 개체의 다중 값 특성에 중복 값을 추가하면 PutEx 호출이 성공하지만 중복 값은 무시됩니다.

마찬가지로 PutEx 를 사용하여 Active Directory 개체의 다중값 속성에서 하나 이상의 값을 삭제하는 경우 작업이 성공합니다. 즉, 속성에 지정된 값 중 하나 또는 전부가 설정되지 않은 경우에도 오류가 발생하지 않습니다.

참고 WinNT 공급자는 InControlCode 인수에서 전달된 값을 무시하고 PutEx를 사용할 때 ADS_PROPERTY_UPDATE 요청에 해당하는 값을 수행합니다.
 

예제

다음 코드 예제에서는 IADs.PutEx 메서드를 사용하는 방법을 보여 줍니다.

Dim x As IADs

On Error GoTo Cleanup

Set x = GetObject("LDAP://CN=JeffSmith,CN=Users,DC=Fabrikam,DC=com")
'----------------------------------------------------------
' Assume the otherHomePhone has the values
' 425-707-9790, 425-707-9791
'----------------------------------------------------------
 
' Adding a value
x.PutEx ADS_PROPERTY_APPEND, "otherhomePhone", Array("425-707-9792")  
x.SetInfo              ' Now the values are 425-707-9790,425-707-9791,425-707-9792. 
deleting two values
x.PutEx ADS_PROPERTY_DELETE, "otherHomePhone", Array("425-707-9790", "425-707-9791")
x.SetInfo              ' Now the values are 425-707-9792.
 
' Changing the remaining value
x.PutEx ADS_PROPERTY_UPDATE, "otherHomePhone", Array("425-707-9793", "425-707-9794")
x.SetInfo              ' Now the values are 425-707-9793,425-707-9794.
 
' Deleting the value
x.PutEx ADS_PROPERTY_CLEAR, "otherHomePhone",  vbNullString
x.SetInfo              ' Now the property has no value.

Cleanup:
    If(Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set x = Nothing

다음 코드 예제에서는 IADs::P UtEx 메서드를 사용하는 방법을 보여 줍니다.

HRESULT hr;
IADs *pADs=NULL;
LPWSTR pszADsPath = L"LDAP://CN=JeffSmith,CN=Users,DC=Fabrikam,DC=com";
 
CoInitialize(NULL);
 
hr = ADsGetObject(pszADsPath, IID_IADs, (void**) &pADs);

if(SUCCEEDED(hr)) 
{
    VARIANT var;
    VariantInit(&var);
     
    LPWSTR pszPhones[] = { L"425-707-9790", L"425-707-9791" };
    DWORD dwNumber = sizeof(pszPhones)/sizeof(LPWSTR);
    hr = ADsBuildVarArrayStr(pszPhones, dwNumber, &var);
    hr = pADs->Put(CComBSTR("otherHomePhone"), var); 
    VariantClear(&var);
    hr = pADs->SetInfo();   // The phone list is now 425-707-9790, 425-707-9791.
     
    // Append another number to the list.
    LPWSTR pszAddPhones[]={L"425-707-9792"};
    hr = ADsBuildVarArrayStr(pszAddPhones, 1, &var);
    hr = pADs->PutEx(ADS_PROPERTY_APPEND, CComBSTR("otherHomePhone"), var);
    hr = pADs->SetInfo();   // The list becomes 
                            // 425-707-9790, 425-707-9791, 425-707-9792.
    VariantClear(&var);
     
    hr = ADsBuildVarArrayStr(pszPhones, dwNumber, &var);
    hr = pADs->PutEx(ADS_PROPERTY_DELETE, CComBSTR("otherHomePhone"), var);
    hr = pADs->SetInfo();  // The list becomes 425-707-9792.
     
    pszPhones[0] = L"425-707-9793";
    pszPhones[1] = L"425-707-9794";
    hr = ADsBuildVarArrayStr(pszPhones, dwNumber, &var);
    hr = pADs->PutEx(ADS_PROPERTY_UPDATE, CComBSTR("otherHomePhone"), var);
    hr = pADs->SetInfo();  // The list becomes 425-707-9793, 425-707-9794.
     
    VariantClear(&var);
    V_VT(&var)=VT_NULL;
    hr = pADs->PutEx(ADS_PROPERTY_CLEAR, CComBSTR("otherHomePhone"), var);
    hr = pADs->SetInfo();  // The list is empty.

    VariantClear(&var);
    pADs->Release();
}

hr = CoUninitialize();

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 iads.h
DLL Activeds.dll

추가 정보

IAD

IADs::Get

IADs::GetEx

IADs::P ut

속성 캐시