Метод IAsyncReader::Request (strmif.h)
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Метод Request
помещает в очередь асинхронный запрос данных.
Синтаксис
HRESULT Request(
IMediaSample *pSample,
[in] DWORD_PTR dwUser
);
Параметры
pSample
Указатель на интерфейс IMediaSample примера мультимедиа, предоставленного вызывающим.
[in] dwUser
Задает произвольное значение, которое возвращается по завершении запроса.
Возвращаемое значение
Возвращает значение HRESULT . Ниже приведены возможные значения.
Код возврата | Описание |
---|---|
|
Успешно. |
|
Буфер не выровнен правильно. |
|
Выборка не была маркирована по времени. |
|
Закрепление очищается. |
|
Запрошенная начальная позиция находится после конца файла. |
|
Недостаточно памяти. |
Комментарии
Перед вызовом этого метода извлеките образец носителя из распределителя пин-кода. Метка времени выборки со смещением байтов, которые вы запрашиваете, первый и последний включительно, умножены на 10 000 000. Смещения байтов относятся к началу потока.
Начальная и стоп-позиции должны соответствовать выравниванию, которое было решено при соединении контактов. В противном случае метод может вернуть VFW_E_BADALIGN. Если согласованное выравнивание является более грубым, чем фактическое выравнивание потока, позиция остановки может превысить реальную длительность. Если это так, метод округляет позицию остановки до фактического выравнивания.
Хотя это технически является нарушением правил COM, вызывающий объект должен оставить невыполненные ссылки на выборку. Метод Request
не вызывает AddRef или Release, поэтому для сохранения активного примера требуется счетчик ссылок.
Метод возвращается до завершения запроса. Вызовите метод IAsyncReader::WaitForNext , чтобы дождаться запроса. Не используйте исходный образец носителя, пока запрос находится в состоянии ожидания. Метод WaitForNext возвращает указатель на исходный пример. Если запрос выполнен успешно, пример содержит запрошенные данные. Метод WaitForNext также возвращает любое значение, указанное в параметре dwUser . Вызывающий объект может использовать это значение для идентификации примера.
Примеры
В следующем примере показана возможная вспомогательная функция для ввода пин-кода для постановки запросов в очередь:
C++ |
---|
|
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | strmif.h (включая Dshow.h) |
Библиотека | Strmiids.lib |