Функция 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, rgflags и rgpropvar.
[in] riid
Тип: REFIID
Ссылка на идентификатор запрошенного интерфейса.
[out] ppv
Тип: void**
При возврате этой функции содержит указатель интерфейса, запрошенный в riid. Обычно это IPropertyChangeArray.
Возвращаемое значение
Тип: HRESULT
Если эта функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Эта функция создает объект COM, реализующий IPropertyChangeArray. Этот объект является контейнером для набора интерфейсов IPropertyChange и может использоваться с IFileOperation для применения набора изменений свойств к набору файлов.
Перед вызовом PSCreatePropertyChangeArray необходимо инициализировать COM с помощью CoInitialize или OleInitialize. COM должен оставаться инициализированным в течение времени существования этого объекта. Массив изменений свойств выполняется в однопотоковом объекте (STA).
Массив изменений свойств можно инициализировать либо путем указания простых изменений с помощью параметров, либо с помощью различных методов IPropertyChangeArray для вставки или добавления дополнительных изменений.
Параметры связаны друг с другом по значению индекса. Например, для свойства 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 с пакетом обновления 2 (SP2), Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 с пакетом обновления 1 (SP1) [только классические приложения] |
Целевая платформа | Windows |
Header | propsys.h |
Библиотека | Propsys.lib |
DLL | Propsys.dll (версия 6.0 или более поздняя) |
Распространяемые компоненты | Windows Desktop Search (WDS) 3.0 |