共用方式為


IMediaLocator::FindMediaFile 方法

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

注意

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

 

方法 FindMediaFile 會搜尋檔案,如果成功,則會擷取檔案的路徑。

語法

HRESULT FindMediaFile(
   BSTR Input,
   BSTR FilterString,
   BSTR *pOutput,
   long Flags
);

參數

輸入

檔案名,包括路徑,其中檔案上次已知所在的位置。 對於時間軸中的來源物件,請使用目前的媒體名稱。

FilterString

BSTR包含一組篩選字串,格式為OPENFILENAME結構的lpstrFilter成員所需。 如果媒體定位器顯示 [檔案開啟] 對話方塊,則會使用此篩選。 如果Flags參數不包含SFN_VALIDATEF_POPUP旗標,此值可以是Null

pOutput

接收檔案實際路徑的變數指標,如果它與 Input 中包含的值不同,以及方法成功找到檔案,則為 。

旗標

零個或多個旗標的位組合。 如需可能旗標的清單,請參閱 檔案名驗證旗標

傳回值

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

備註

FilterString參數所指定的 [檔案開啟] 對話方塊篩選字串包含內部 Null 字元。 例如,Video\0*.avi\0\0 是有效的篩選字串。 您無法使用 SysAllocStr 函式來配置 BSTR,因為該函式需要 Null 終止的字串,而且會在第一個 Null 字元截斷字串。 因此,使用 SysAllocStringLen之類的函式,其中包含長度的明確參數:

BSTR filter = SysAllocStringLen(L"Video\0*.avi\0", 12);
// Note: SysAllocStringLen appends an additional '\0' to the string.

如果使用者取消 [檔案開啟] 對話方塊,此方法會傳回E_FAIL。

方法會為pOutput中的BSTR配置記憶體。 應用程式必須呼叫 SysFreeString 以釋放記憶體。

注意

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

 

注意

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

 

規格需求

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

另請參閱

IMediaLocator 介面

錯誤和成功碼