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


Метод IMemAllocator::D ecommit (strmif.h)

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

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

Синтаксис

HRESULT Decommit();

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

Возвращает S_OK в случае успешного выполнения или значение HRESULT , указывающее причину ошибки.

Комментарии

Все потоки, ожидающие в методе IMemAllocator::GetBuffer , возвращаются с ошибкой. Дальнейшие вызовы GetBuffer завершаются ошибкой , пока не будет вызван метод IMemAllocator::Commit .

Цель Decommit метода — предотвратить получение фильтрами дополнительных образцов из распределителя. Фильтры, которые уже содержат количество ссылок в образце, не затрагиваются. Однако после того, как фильтр освобождает пример и количество ссылок становится равным нулю, пример больше недоступен.

Распределитель может освободить память, принадлежащая любому образцу, с нулем ссылок. Таким образом, Decommit метод "освобождает" память в том смысле, что фильтры перестают иметь доступ к ней. То, возвращается ли память в кучу, зависит от реализации распределителя. Некоторые распределители ожидают, пока не будет использовать собственный метод деструктора. Однако при удалении выделенная память не должна оставлять выделенную память. Поэтому деструктор распределителя должен ждать, пока не будут освобождены все его образцы.

Требования

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

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

Коды ошибок и успешного выполнения

Интерфейс IMemAllocator