IMediaLocator::FindMediaFile 方法
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 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。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱