IMediaLocator::FindMediaFile 方法

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 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 和 .NET Framework 3.0 的Microsoft Windows SDK更新。 Qedit.h 在 Windows 7 和 .NET Framework 3.5 Service Pack 1 的Microsoft Windows SDK中不可用。

 

要求

要求
标头
Qedit.h

Strmiids.lib

另请参阅

IMediaLocator 接口

错误和成功代码