Share via


IEnumSTATPROPSETSTG-Compound檔案實作

IEnumSTATPROPSETSTG介面的複合檔案實作可用來列舉包含統計屬性資料的STATPROPSETSTG結構陣列。 IPropertySetStorage 實作會管理統計資料,並與目前的複合檔案儲存物件相關聯。

使用時機

呼叫 IEnumSTATPROPSETSTG 的方法以列舉 STATPROPSETSTG 結構,其中每個結構都會提供與複合檔案儲存物件相關聯之其中一個屬性集的相關資料。

備註

IEnumSTATPROPSETSTG::Next

取得下一或多個 STATPROPSETSTG 結構, (此數位是由 celt 參數) 所指定。 透過呼叫IEnumSTATPROPSETSTG::Next的複合檔案實作所提供的STATPROPSETSTG元素,請遵循下列規則:

  • 如果 IEnumSTATPROPSETSTG::Next 無法提供 STATPROPSETSTG.fmtid,則會將零寫入該成員。 當屬性集沒有預先定義的名稱 (,例如 \005SummaryInformation) 且不是合法值時,就會發生這種情況。
  • DocumentSummaryInformation 和 UserDefined 屬性集很特殊,因為它可能有兩個屬性集區段。 本屬性集描述于 DocumentSummaryInformation 和 UserDefined 屬性集一節中。 第二個區段稱為 User-Defined Properties。 每個區段都會以唯一格式識別碼來識別, (FMTID) 。 當 IPropertySetStorage::Enum 用來列舉屬性集時,將不會列舉User-Defined屬性集。

注意

如果您一律使用 IPropertySetStorage::Create建立屬性集,則因為儲存體名稱會建立 「Character GUID」, 因此 IEnumSTATPROPSETSTG::Next 會傳回屬性集 [STATPROPSETSTG.fmtid ] 的非零有效 FMTID。

 

  • STATPROPSETSTG.grfFlags 成員不一定反映屬性集是否為 ANSI。 如果已設定PROPSETFLAG_ANSI,則屬性集絕對是 ANSI。 如果PROPSETFLAG_ANSI清楚,屬性集可能是 Unicode 或非 Unicode,因為無法判斷它是否為 ANSI 而不開啟它。
  • STATPROPSETSTG.grfFlags 成員確實反映屬性集是否簡單,因此PROPSETFLAG_NONSIMPLE旗標的設定一律有效。
  • 如果 IEnumSTATPROPSETSTG::Next 無法提供 STATPROPSETSTG.clsid,它會設定為所有零 (CLSID_Null) 。 在 COM 複合檔案實作中,當屬性集是簡單的 (PROPSETFLAG_NONSIMPLE旗標未設定) 或非簡單,但未明確設定 CLSID 時,就會發生這種情況。 針對非簡單屬性集,收到的 CLSID 是基礎 IStorage所維護的 CLSID。
  • 如果 IEnumSTATPROPSETSTG::Next 無法提供時間欄位 [ctimemtimeatime],則每個不支援的時間都會設定為零。 在 COM 複合檔案實作中,取得這些值取決於從基礎 IStorage 實作 擷取這些值。

IEnumSTATPROPSETSTG::Skip

略過 celt中指定的專案數目。 如果略過指定的元素數目,則傳回S_OK,如果略過比要求的元素少,則會傳回S_FALSE。 在其他情況下,傳回適當的錯誤。

IEnumSTATPROPSETSTG::Reset

將游標設定為列舉的開頭。 如果成功,則傳回S_OK,否則會傳回STG_E_INVALIDHANDLE。

IEnumSTATPROPSETSTG::Clone

複製這個列舉值的目前列舉狀態。