Функция PSGetItemPropertyHandlerWithCreateObject (propsys.h)
Извлекает обработчик свойств для элемента оболочки.
Синтаксис
PSSTDAPI PSGetItemPropertyHandlerWithCreateObject(
[in] IUnknown *punkItem,
[in] BOOL fReadWrite,
[in] IUnknown *punkCreateObject,
[in] REFIID riid,
[out] void **ppv
);
Параметры
[in] punkItem
Тип: IUnknown*
Указатель на интерфейс IUnknown элемента оболочки, поддерживающего IShellItem.
Windows XP: Используйте SHCreateShellItem для создания элемента оболочки.
Windows Vista: Для создания элемента оболочки используйте SHCreateItemFromIDList, SHCreateItemFromParsingName, SHCreateItemFromRelativeName, SHCreateItemInKnownFolder или SHCreateItemWithParent .
[in] fReadWrite
Тип: BOOL
Значение TRUE для получения обработчика свойств чтения и записи. Значение FALSE для получения обработчика свойств только для чтения.
[in] punkCreateObject
Тип: IUnknown*
Указатель на интерфейс IUnknown объекта фабрики класса, который поддерживает ICreateObject.
[in] riid
Тип: REFIID
Ссылка на IID интерфейса, извлекаемого через ppv.
[out] ppv
Тип: void**
При успешном возврате этой функции содержит указатель интерфейса, запрошенный в riid. Обычно это IPropertyStore или IPropertyStoreCapabilities.
Возвращаемое значение
Тип: PSSTDAPI
Возвращает S_OK в случае успешного выполнения или значение ошибки в противном случае.
Комментарии
Эта функция поддерживается в Windows XP как часть распространяемого компонента Поиска компьютеров Microsoft Windows (WDS), который включает iPropertyStore и вспомогательные интерфейсы. Для приложений, поддерживаемых только в Windows Vista или более поздних версиях, рекомендуется использовать IShellItem2::GetPropertyStoreWithCreateObject вместо PSGetItemPropertyHandlerWithCreateObject , так как IShellItem2::GetPropertyStoreWithCreateObject предоставляет более широкий набор свойств в возвращаемом хранилище свойств.
Эта функция примерно эквивалентна передаче флага GPS_HANDLERPROPERTIESONLY в IShellItem2::GetPropertyStoreWithCreateObject.
Параметр punkCreateObject позволяет создать хранилище свойств в контексте, отличном от контекста вызывающего объекта. Например, реализация ICreateObject может привести к созданию хранилища свойств в другом процессе. Этот параметр используется только для обработчиков свойств, которые его поддерживают и которые зарегистрированы в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers
.
Перед вызовом PSGetItemPropertyHandlerWithCreateObject необходимо инициализировать модель com с помощью CoInitialize или OleInitialize. COM должен оставаться инициализированным в течение всего времени существования этого объекта.
Примеры
В следующем примере, который будет включен в состав более крупной программы, показано, как использовать PSGetItemPropertyHandlerWithCreateObject для получения обработчика свойств для элемента.
// IShellItem *psi;
// ICreateObject *pco;
// Assume variables pco and psi are valid and initialized.
IPropertyStore *pStore;
HRESULT hr = PSGetItemPropertyHandlerWithCreateObject(psi, FALSE, pco, IID_PPV_ARGS(&pStore));
if (SUCCEEDED(hr))
{
// pStore is now valid and contains properties exposed through the
// property handler for the item.
pStore->Release();
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | 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 |