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


Управление фильтрами графов с помощью C

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

Если вы пишете приложение DirectShow на языке C (а не C++), необходимо использовать указатель vtable для вызова методов. В следующем примере показано, как вызвать метод IUnknown::QueryInterface из приложения, написанного на языке C:

pGraph->lpVtbl->QueryInterface(pGraph, &IID_IMediaEvent, (void **)&pEvent);

Ниже показан эквивалентный вызов в C++:

pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

В C COM-интерфейсы определяются как структуры. Член lpVtbl является указателем на таблицу методов интерфейса (vtable). Все методы принимают дополнительный параметр, который является указателем на интерфейс .

Приложения