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


Интерфейс IMemAllocator (strmif.h)

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

Интерфейс IMemAllocator выделяет примеры мультимедиа для перемещения данных между контактами.

Этот интерфейс используется контактами с общими распределителями, когда входной контакт предоставляет интерфейс IMemInputPin . Контакты согласовывают, какой контакт предоставит распределителю. Распределитель используется для выделения буферов памяти, извлечения пустых буферов и освобождения буферов. Не каждый фильтр создает собственный распределитель, поэтому один распределитель может использоваться несколькими фильтрами. Дополнительные сведения см. в разделе How Filters Connect.

Приложения обычно не используют этот интерфейс.

Чтобы использовать распределитель, выполните следующие действия.

  1. Вызовите метод IMemAllocator::SetProperties , чтобы указать требования к буферу, включая количество буферов и размер каждого буфера.
  2. Вызовите метод IMemAllocator::Commit для выделения буферов.
  3. Вызовите метод IMemAllocator::GetBuffer для получения примеров мультимедиа. Этот метод блокируется до тех пор, пока не станет доступен следующий пример.
  4. Завершив работу с каждым примером, вызовите метод IUnknown::Release в образце. Образец не удаляется, когда его число ссылок достигает нуля. Вместо этого пример возвращается в список бесплатных распределителя.
  5. Завершив использование распределителя, вызовите метод IMemAllocator::D ecommit , чтобы освободить память для буферов.

Наследование

Интерфейс IMemAllocator наследуется от интерфейса IUnknown . IMemAllocator также имеет следующие типы элементов:

Методы

Интерфейс IMemAllocator содержит следующие методы.

 
IMemAllocator::Commit

Метод Commit выделяет буферную память.
IMemAllocator::D commit

Метод Decommit освобождает буферную память.
IMemAllocator::GetBuffer

Метод GetBuffer извлекает образец носителя, содержащий пустой буфер.
IMemAllocator::GetProperties

Метод GetProperties извлекает количество буферов, создаваемых распределителем, и свойства буфера.
IMemAllocator::ReleaseBuffer

Метод ReleaseBuffer освобождает пример носителя.
IMemAllocator::SetProperties

Метод SetProperties указывает количество выделенных буферов и размер каждого буфера.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header strmif.h (включая Dshow.h)