PSGetPropertyFromPropertyStorage 函式 (propsys.h)
取得屬性的值,如儲存在串行化屬性記憶體中。
語法
PSSTDAPI PSGetPropertyFromPropertyStorage(
[in] PCUSERIALIZEDPROPSTORAGE psps,
[in] DWORD cb,
[in] REFPROPERTYKEY rpkey,
[out] PROPVARIANT *ppropvar
);
參數
[in] psps
類型: PCUSERIALIZEDPROPSTORAGE
包含串行化屬性之已配置緩衝區的指標。 呼叫 IPersistSerializedPropStorage::GetPropertyStorage 取得此緩衝區。
[in] cb
類型: DWORD
PSps 指向之 USERIALIZESPROPSTORAGE 緩衝區的大小,以位元組為單位。
[in] rpkey
類型: REFPROPERTYKEY
PROPERTYKEY 的參考,識別要取得值的屬性。
[out] ppropvar
類型: PROPVARIANT**
當此函式傳回時,會包含要求的 值。
傳回值
類型: PSSTDAPI
如果成功,則傳回 S_OK ,否則傳回錯誤值。
備註
如果呼叫的應用程式已經有串行化屬性儲存區,而且記憶體中不需要超過幾個屬性,則此函式是想要呼叫的。 如果需要擷取許多屬性,可以透過 PSCreateMemoryPropertyStore 建立記憶體屬性存放區、呼叫 IPersistSerializedPropStorage::SetPropertyStorage 來初始化屬性存放區,以及使用 IPropertyStore 來擷取屬性來增強效能。
請注意, PSGetPropertyFromPropertyStorage 僅適用於 IPersistSerializedPropStorage 系統實作所建立的串行化緩衝區。 您必須先呼叫 PSCreateMemoryPropertyStore 來取得記憶體屬性存放區。 該存放區接著可以使用 IPersistSerializedPropStorage 介面來建立串行化緩衝區。
雖然 SERIALIZEDPROPSTORAGE 是不透明的串行化數據結構,其格式未來可能會變更,但後續版本的 Windows 將會支援舊版的格式。 因為格式不透明,所以應用程式應該使用支援的屬性記憶體 API 來存取及操作串行化緩衝區 (請參閱 IPersistSerializedPropStorage) 。
範例
下列範例要包含在較大的程式中,示範如何使用 PSGetPropertyFromPropertyStorage 從串行化屬性記憶體讀取值。
// SERIALIZEDPROPSTORAGE *pStorage;
// DWORD cbStorage;
// Assume the variables pStorage and cbStorage are initialized and valid.
PROPVARIANT propvar;
HRESULT hr = PSGetPropertyFromPropertyStorage(pStorage, cb, PKEY_Rating, &propvar);
if (SUCCEEDED(hr))
{
// propvar is now valid.
PropVariantClear(&propvar);
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP 搭配 SP2、Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 SP1 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | propsys.h |
程式庫 | Propsys.lib |
Dll | Propsys.dll (6.0 版或更新版本) |
可轉散發套件 | Windows 桌面搜尋 (WDS) 3.0 |