PSGetNamedPropertyFromPropertyStorage 函式 (propsys.h)
依屬性名稱從串行化屬性記憶體取得值。
語法
PSSTDAPI PSGetNamedPropertyFromPropertyStorage(
[in] PCUSERIALIZEDPROPSTORAGE psps,
[in] DWORD cb,
[in] LPCWSTR pszName,
[out] PROPVARIANT *ppropvar
);
參數
[in] psps
類型: PCUSERIALIZEDPROPSTORAGE
包含串行化屬性之已配置緩衝區的指標。 呼叫 IPersistSerializedPropStorage::GetPropertyStorage 以取得緩衝區。
[in] cb
類型: DWORD
PSps 指向之 USERIALIZESPROPSTORAGE 緩衝區的大小,以位元組為單位。
[in] pszName
類型: LPCWSTR
以 Null 結尾的 Unicode 字串指標,其中包含屬性的名稱。
[out] ppropvar
類型: PROPVARIANT*
當此函式傳回時,會包含要求的 值。
傳回值
類型: PSSTDAPI
如果成功,則傳回 S_OK ,否則傳回錯誤值。
備註
如果呼叫的應用程式已經有串行化屬性儲存區,而且記憶體中不需要超過幾個屬性,則此函式是想要呼叫的。 如果需要擷取許多屬性,可以藉由呼叫 PSCreateMemoryPropertyStore 來建立記憶體屬性存放區,藉由呼叫 IPersistSerializedPropStorage::SetPropertyStorage 來初始化屬性存放區,以及使用 INamedPropertyStore 或 IPropertyStore 來擷取屬性來初始化屬性存放區。
請注意, PSGetNamedPropertyFromPropertyStorage 僅適用於 IPersistSerializedPropStorage 系統實作所建立的串行化緩衝區。 您必須先呼叫 PSCreateMemoryPropertyStore 來取得記憶體屬性存放區;該存放區接著可以使用 IPersistSerializedPropStorage 介面建立串行化緩衝區。
雖然 SERIALIZEDPROPSTORAGE 是不透明的串行化數據結構,其格式未來可能會變更,但後續版本的 Windows 將會支援舊版的格式。 因為格式不透明,所以應用程式應該使用支援的屬性記憶體 API 來存取及操作串行化緩衝區 (請參閱 IPersistSerializedPropStorage 和 PSGetPropertyFromPropertyStorage) 。
範例
下列範例要包含在較大的程式中,示範如何使用 PSGetNamedPropertyFromPropertyStorage 從串行化屬性記憶體讀取值。
// SERIALIZEDPROPSTORAGE *pStorage;
// DWORD cbStorage;
// Assume the variables pStorage and cbStorage are initialized and valid.
PROPVARIANT propvar;
HRESULT hr = PSGetNamedPropertyFromPropertyStorage(pStorage, cb, L"MyProperty", &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 |