CPersistStream 類別
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
CPersistStream
是篩選準則 (的持續性屬性的基類,也就是已儲存圖表中的篩選屬性) 。
最簡單的使用 CPersistStream
方式是:
排列篩選以繼承此類別。
在您的類別中實 作 WriteToStream 和 ReadFromStream 。 這些會覆寫此處的函式,但不會做為預留位置。
變更 NonDelegatingQueryInterface 以處理 IPersistStream。
實作 SizeMax 以傳回您所儲存資料位元組數目的上限。
如果您儲存 Unicode™ 資料,請記住 WCHAR 是 2 個位元組。
當您的資料變更時,請呼叫 SetDirty。
版本號碼
在某些情況下,您可能會決定改變或擴充資料的格式。 接著,您希望您在所有舊的已儲存資料流程中都有版本號碼,因此您可以在讀取它們時得知它們是否代表舊的或新的表單。 為了協助您,此類別會撰寫並讀取版本號碼。 寫入時,它會呼叫 GetSoftwareVersion 來查詢目前所使用的軟體版本。 (實際上,這是 file.) 資料配置的版本號碼,它會將此寫入為數據的第一件事。 如果您想要變更版本,請實作 (覆寫) GetSoftwareVersion。 它會在呼叫ReadFromStream之前,先將檔案的版本號碼讀取為mPS_dwFileVersion,因此在ReadFromStream中,您可以檢查mPS_dwFileVersion,以查看您是否讀取舊版檔案。 通常,您應該接受其版本比讀取它們的軟體版本還新的檔案。
CPersistStream 會實作 IPersistStream。 如需詳細資訊,請參閱 Microsoft Platform SDK 中的 COM 參考。
受保護的資料成員 | Description |
---|---|
mPS_dwFileVersion | 檔案的版本號碼。 |
mPS_fDirty | 必須儲存此資料流程的資料。 |
成員函數 | Description |
CPersistStream | 建構 CPersistStream 物件。 |
SetDirty | 指出物件必須儲存至資料流程。 |
可覆寫的成員函式 | Description |
GetClassID | 擷取這個資料流程的類別識別碼。 |
GetSoftwareVersion | 擷取這個檔案格式的版本號碼。 |
ReadFromStream | 從資料流程讀取篩選的資料。 |
SizeMax | 擷取資料 (不包含版本號碼) 所需的位元組數目。 |
WriteToStream | 將篩選的資料寫入資料流程。 |
IPersistStream 方法 | Description |
GetSizeMax | 擷取資料 (所需的位元組數目,包括版本號碼) 。 |
IsDirty | 檢查物件是否必須儲存。 |
載入 | 將資料從資料流程載入記憶體。 |
儲存 | 將資料從記憶體儲存到資料流程。 |