CPullPin 類別

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

cpullpin 類別階層

類別 CPullPin 支援透過 IAsyncReader 介面提取資料的輸入針腳。 如果您要實作使用提取模型從上游篩選要求資料的篩選,請使用這個類別。 如需詳細資訊,請參閱篩選圖形和提取模型中的資料流程。

這個類別不會衍生自 CBasePin 或實作 IPin 介面,而某些方法名稱與 IPin衝突,因此最好是做為釘選內的協助程式物件。 若要使用此類別,請執行下列動作:

  1. CPullPin 衍生協助程式類別,並從 CBasePin衍生輸入釘選類別。 將 物件的實例 CPullPin 宣告為 pin 類別的成員變數。
  2. 覆寫 CBasePin::CheckConnect 方法來呼叫 CPullPin::Connect。 此方法會查詢 IAsyncReader的其他針腳。
  3. 覆寫 CBasePin::BreakConnect 方法來呼叫 CPullPin::D isconnect
  4. 覆寫 CBasePin::Active 方法以呼叫 CPullPin::Active。 這個方法會啟動背景工作執行緒,從上游篩選準則提取樣本。 當針腳連線時,您可以指定是否要背景工作執行緒提出非同步或同步讀取要求。
  5. 覆寫 CBasePin::Inactive 方法以呼叫 CPullPin::Inactive。 這個方法會關閉背景工作執行緒。
  6. 實作純虛擬 CPullPin::Receive 方法來處理傳入的範例,並將其傳遞至下游。
  7. 若要設定停止和開始位置,或搜尋資料流程,請呼叫 CPullPin::Seek 方法。 這個方法會暫停背景工作執行緒,並排清篩選圖形。
  8. 實作純虛擬 CPullPin::EndOfStreamCPullPin::BeginFlushCPullPin::EndFlush 方法,如這些方法的備註中所述。
  9. 實作純虛擬 CPullPin::OnError 方法來處理串流錯誤。
公用成員變數 Description
m_pAlloc 記憶體配置 器的 IMemAllocator 介面指標。
公用方法 Description
使用中 建立從輸出釘選提取資料的背景工作執行緒。
AlignDown 將值截斷為指定的對齊界限。
AlignUp 將值四捨五入至指定的對齊界限。
連接 完成輸出釘選的連接。
CPullPin 建構函式方法。
~CPullPin 解構函式方法。 虛擬。
DecideAllocator 與輸出釘選交涉配置器。 虛擬。
中斷連線 使用輸出釘選將連接擷取。
持續時間 擷取資料流程的持續時間。
GetReader 傳回輸出針腳 IAsyncReader 介面的指標。
非使用中 關閉從輸出釘選提取資料的背景工作執行緒。
Seek 設定資料流程的開始和停止位置。
純虛擬方法 Description
BeginFlush 通知擁有篩選以排清下游篩選。
EndFlush 通知擁有篩選以結束排清作業。
EndOfStream 在 物件傳遞最後一個範例之後呼叫。
OnError 如果在串流期間發生錯誤,則呼叫 。
接收 當 物件從輸出釘選收到媒體範例時呼叫。

規格需求

需求
標頭
Pullpin.h (包含 Streams.h)
程式庫
Strmbase.lib (零售組建) ;
Strmbasd.lib (偵錯組建)