다음을 통해 공유


PSCreatePropertyChangeArray 함수(propsys.h)

IPropertyChange 개체 집합에 대한 컨테이너를 만듭니다. 이 컨테이너는 IFileOperation 과 함께 사용하여 파일 집합에 속성 변경 내용 집합을 적용할 수 있습니다.

구문

PSSTDAPI PSCreatePropertyChangeArray(
  [in, optional] const PROPERTYKEY *rgpropkey,
  [in, optional] const PKA_FLAGS   *rgflags,
  [in, optional] const PROPVARIANT *rgpropvar,
  [in]           UINT              cChanges,
  [in]           REFIID            riid,
  [out]          void              **ppv
);

매개 변수

[in, optional] rgpropkey

형식: const PROPERTYKEY*

변경 내용이 저장되는 특정 속성의 이름을 지정하는 PROPERTYKEY 구조체의 배열에 대한 포인터입니다. 이 값이 NULL이면 cChanges는 0이어야 합니다.

[in, optional] rgflags

형식: const PKA_FLAGS*

PKA_FLAGS 값 배열에 대한 포인터입니다. 이 값이 NULL이면 cChanges는 0이어야 합니다.

[in, optional] rgpropvar

형식: const PROPVARIANT*

PROPVARIANT 구조체의 배열에 대한 포인터입니다. 이 값이 NULL이면 cChanges는 0이어야 합니다.

[in] cChanges

형식: UINT

적용할 변경 내용 수입니다. 각 배열 rgpropkey, rgflagsrgpropvar의 요소 수입니다.

[in] riid

형식: REFIID

요청된 인터페이스의 ID에 대한 참조입니다.

[out] ppv

형식: void**

이 함수가 반환되면 riid에서 요청된 인터페이스 포인터가 포함됩니다. 일반적으로 IPropertyChangeArray입니다.

반환 값

형식: HRESULT

이 함수가 성공하면 S_OK 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

이 함수는 IPropertyChangeArray를 구현하는 COM(구성 요소 개체 모델) 개체를 만듭니다. 이 개체는 IPropertyChange 인터페이스 집합에 대한 컨테이너이며 IFileOperation 과 함께 사용하여 파일 집합에 속성 변경 내용 집합을 적용할 수 있습니다.

PSCreatePropertyChangeArray를 호출하기 전에 CoInitialize 또는 OleInitialize를 사용하여 COM을 초기화해야 합니다. COM은 이 개체의 수명 동안 초기화된 상태로 유지되어야 합니다. 속성 변경 배열은 STA(단일 스레드 아파트)에서 실행됩니다.

매개 변수를 사용하여 간단한 변경 내용을 지정하거나 다양한 IPropertyChangeArray 메서드를 사용하여 추가 변경 내용을 삽입하거나 추가하여 속성 변경 배열을 초기화할 수 있습니다.

매개 변수는 인덱스 값으로 함께 연결됩니다. instance 경우 속성 rgpropkey[0]의 경우 새 값 rgpropvar[0]이 rgflags[0]에 지정된 대로 적용됩니다. cChanges 매개 변수는 이러한 집합의 수를 나타냅니다. 따라서 각 배열의 요소 수는 같아야 합니다. ARRAYSIZE(rgpropkey) = ARRAYSIZE(rgflags) = ARRAYSIZE(rgpropvar) = cChanges.

IFileOperation 은 파일을 여러 번 열지 않도록 속성 변경 배열의 모든 변경 내용을 파일에 동시에 적용합니다.

예제

더 큰 프로그램의 일부로 포함할 다음 예제에서는 PSCreatePropertyChangeArray 를 사용하여 Comment 속성을 "Fun"으로 설정하고 하나 이상의 파일에서 Rating 을 4로 설정하는 방법을 보여 줍니다.

// IFileOperation *pfo;
// Assume variable pfo has been initialized by calling SetOperationFlags, 
// ApplyPropertiesToItems, and SetProgressMessage as appropriate.
 
PROPVARIANT rgpropvar[2] = {0};

HRESULT hr = InitPropVariantFromString(L"Fun", &rgpropvar[0]);

if (SUCCEEDED(hr))
{
    hr = InitPropVariantFromUInt32(RATING_FOUR_STARS_SET, &rgpropvar[1]);

    if (SUCCEEDED(hr))
    {
        REFPROPERTYKEY rgkey[2] = {PKEY_Comment, PKEY_Rating};
        PKA_FLAGS rgflags[2] = {PKA_SET, PKA_SET};
        IPropertyChangeArray *pChangeArray;

        hr = PSCreatePropertyChangeArray(rgkey, rgflags, rgpropvar, 2, IID_PPV_ARGS(&pChangeArray));

        if (SUCCEEDED(hr))
        {
            hr = pfo->SetProperties(pChangeArray);

            if (SUCCEEDED(hr))
            {
                hr = pfo->PerformOperations();
            }
            pChangeArray->Release();
        }
    }
    ClearPropVariantArray(rgpropvar, ARRAYSIZE(rgpropvar));
}

요구 사항

요구 사항
지원되는 최소 클라이언트 WINDOWS XP SP2, Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 SP1 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 propsys.h
라이브러리 Propsys.lib
DLL Propsys.dll(버전 6.0 이상)
재배포 가능 파일 WDS(Windows 데스크톱 검색) 3.0

추가 정보

PSCreateSimplePropertyChange