IPropertySetStorage::Open 方法 (propidl.h)

Open 方法會開啟屬性集儲存物件中包含的屬性集。

語法

HRESULT Open(
  [in]  REFFMTID         rfmtid,
  [in]  DWORD            grfMode,
  [out] IPropertyStorage **ppprstg
);

參數

[in] rfmtid

要開啟之屬性的格式識別碼 (FMTID) 。 如需平臺 SDK 中已知和預先定義 FMTID 的詳細資訊,請參閱 預先定義的屬性集格式識別碼

[in] grfMode

要開啟新建立之屬性集的存取模式。 這些旗標取自 STGM 常數。 下列一節會說明可能使用的旗標及其在此方法內容中的意義。

[out] ppprstg

IPropertyStorage 指標變數的指標,可接收所要求屬性記憶體子對象的介面指標。

傳回值

除了下列專案之外,這個方法還支援標準傳回值E_UNEXPECTED:

備註

屬性集要開啟的模式是在 參數 grfMode 中指定。 這些旗標取自 STGM 常數,但針對此方法,法務值及其意義如下 (只有這些旗標值的特定組合是合法的) 。

意義
STGM_DIRECT 開啟屬性集,而不需額外的交易巢狀層級。 如果未指定STGM_DIRECT或STGM_TRANSACTED) ,則這是預設 (行為。
STGM_TRANSACTED 開啟屬性集,其中具有額外的交易巢狀 (超出交易層級的屬性,如果有的話,請在此屬性上設定記憶體物件) 。 交易模式僅適用於非簡單屬性集。 屬性集中的變更必須透過呼叫 IPropertyStorage::Commit 來認可,才能在此屬性集記憶體上的交易看到變更。
STGM_READ 開啟具有讀取許可權的屬性集。 屬性集記憶體上需要讀取許可權。
STGM_WRITE 開啟具有寫入許可權的屬性集。 並非所有 IPropertyStorage 實作 都支援此模式。
STGM_READWRITE 開啟具有讀取和寫入存取權的屬性集。 請注意,此旗標不是STGM_READ和STGM_WRITE值的二進位 OR。
STGM_SHARE_DENY_NONE 這個屬性集記憶體中屬性集的後續開啟不會遭到拒絕讀取或寫入存取。 (並非所有 implementations.)
STGM_SHARE_DENY_READ 從這個屬性集記憶體開啟屬性集的後續開啟會遭到拒絕讀取存取。 所有實作中都無法使用。
STGM_SHARE_DENY_WRITE 從這個屬性集記憶體開啟屬性集的後續開啟會遭到拒絕寫入存取。 這個值通常用於交易模式,以避免對多個用戶開啟的對象進行不必要的複本。 也就是說,如果指定了STGM_TRANSACTED,但未指定此值,則會建立快照集,不論是否有後續的開啟。 因此,您可以藉由指定此值來改善效能。 所有實作中都無法使用。
STGM_SHARE_EXCLUSIVE 無法從這個屬性集記憶體開啟屬性集的後續開啟。 請注意,這個值不是STGM_SHARE_DENY_READ和STGM_SHARE_DENY_WRITE元素的簡單二進位 OR。
 

這個方法受限於簡單屬性集) 或 IStorage::OpenStorage::OpenStorage (之非簡單屬性) 集的基礎 IStorage::OpenStream (條件約束。 如需簡單和非簡單屬性集的詳細資訊,請參閱屬性集的儲存和 Stream物件。 例如,使用 IPropertySetStorage-Compound File 實作時,您必須將 grfMode 參數中的STGM_SHARE_EXCLUSIVE指定為 IPropertySetStorage::Open。 相反地,如果使用 IPropertySetStorage-獨立實作, IPropertySetStorage::Open 受限於套用至呼叫端指定 IStorage 的條件約束。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 propidl.h (include Objbase.h)
程式庫 Uuid.lib
Dll Ole32.dll

另請參閱

列舉所有範例

IPropertySetStorage

IPropertySetStorage::Create

PROPVARIANT

範例

WriteRead 範例