Поделиться через


Метод IMediaLocator::FindMediaFile

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Примечание

[Не рекомендуется. Этот API может быть удален из будущих выпусков Windows.]

 

Метод FindMediaFile выполняет поиск файла и в случае успешного выполнения извлекает путь к файлу.

Синтаксис

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

Параметры

Ввод

Имя файла, включая путь, по которому последний раз находился файл. Для исходных объектов в временная шкала используйте текущее имя носителя.

FilterString

BSTR, содержащий пары строк фильтра, отформатированные в соответствии с требованиями члена lpstrFilter структуры OPENFILENAME. Указатель мультимедиа использует этот фильтр, если отображается диалоговое окно Открытие файла. Значение может иметь значение NULL , если параметр Flags не содержит флаг SFN_VALIDATEF_POPUP.

pOutput

Указатель на переменную, которая получает фактический путь к файлу, если он отличается от значения, содержащегося во входных данных , и если метод успешно находит файл.

Flags

Побитовое сочетание нулевых или более флагов. Список возможных флагов см. в разделе Флаги проверки имени файла.

Возвращаемое значение

Если этот метод завершается успешно, он возвращает 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.

Метод выделяет память для BSTR в pOutput. Приложение должно вызвать SysFreeString , чтобы освободить память.

Примечание

Файл заголовка Qedit.h несовместим с заголовками Direct3D более поздней версии 7.

 

Примечание

Чтобы получить Qedit.h, скачайте обновление Microsoft Windows SDK для Windows Vista и платформа .NET Framework 3.0. Qedit.h недоступен в Microsoft Windows SDK для Windows 7 и платформа .NET Framework 3.5 с пакетом обновления 1 (SP1).

 

Требования

Требование Значение
Заголовок
Qedit.h
Библиотека
Strmiids.lib

См. также раздел

Интерфейс IMediaLocator

Коды ошибок и успешности