共用方式為


ISampleGrabber::SetOneShot 方法

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

注意

[已被取代。 此 API 可能會從未來的 Windows 版本中移除。]

 

SetOneShot方法會指定範例擷取器篩選準則是否在篩選收到樣本之後停止。

語法

HRESULT SetOneShot(
   BOOL OneShot
);

參數

OneShot

布林值,指定樣本擷取器篩選是否在接收樣本之後停止。

意義
範例擷取器在第一個樣本之後停止。
在第一個範例之後,範例擷取器會繼續處理樣本。 這是預設行為。

 

傳回值

如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

使用此方法從資料流程取得單一範例,如下所示:

  1. 使用TRUE 值呼叫SetOneShot
  2. 或者,使用 IMediaSeeking 介面來搜尋資料流程中的位置。
  3. 呼叫 IMediaControl::Run 以執行篩選圖形。
  4. 呼叫 IMediaEvent::WaitForCompletion 以等候圖形停止。 或者,呼叫 IMediaEvent::GetEvent 以取得圖形事件,直到您收到 EC_COMPLETE 事件為止。

在範例擷取器停止之後,篩選圖表仍處於執行中狀態。 您可以搜尋或暫停圖形,以取得另一個範例。

注意

舊版的檔指出,篩選圖形在收到樣本之後停止。 這不正確。 資料流程結束,但圖形仍處於執行中狀態。

 

範例擷取器會在下游篩選上呼叫 IPin::EndOfStream ,並從它的 IMemInputPin::Receive 方法傳回S_FALSE,以實作單次模式。

注意

標頭檔 Qedit.h 與 7 版之後的 Direct3D 標頭不相容。

 

注意

若要取得 Qedit.h,請下載適用于 Windows Vista 的 Microsoft Windows SDK Update 和 .NET Framework 3.0。 Windows 7 和 .NET Framework 3.5 Service Pack 1 Microsoft Windows SDK中無法使用 Qedit.h。

 

規格需求

需求
標頭
Qedit.h
程式庫
Strmiids.lib

另請參閱

使用範例擷取器

ISampleGrabber 介面