IMediaLocator::FindMediaFile 方法
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media 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中不可用。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅