Функции DLL
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
В этом разделе описывается реализация компонента в виде библиотеки динамической компоновки (DLL) в Microsoft DirectShow.
Библиотека DLL должна реализовывать следующие функции, чтобы ее можно было зарегистрировать, отменить регистрацию и загрузить в память.
- DllMain: точка входа DLL. Имя DllMain — это заполнитель для имени функции, определяемой библиотекой. В реализации DirectShow используется имя DllEntryPoint. Дополнительные сведения см. в разделе Пакет SDK для платформы.
- DllGetClassObject: создает экземпляр фабрики класса. Описано в предыдущих разделах.
- DllCanUnloadNow: запрашивает возможность безопасной выгрузки библиотеки DLL.
- DllRegisterServer: создает записи реестра для библиотеки DLL.
- DllUnregisterServer: удаляет записи реестра для библиотеки DLL.
Из них первые три реализуются DirectShow. Если шаблон фабрики предоставляет функцию инициализации в переменной-члене m_lpfnInit , эта функция вызывается из функции точки входа DLL. Дополнительные сведения о том, когда система вызывает функцию точки входа DLL, см. в разделе DllMain.
Необходимо реализовать Библиотеки DllRegisterServer и DllUnregisterServer, но DirectShow предоставляет функцию С именем AMovieDllRegisterServer2 , которая выполняет необходимую работу. Компонент может просто упаковать эту функцию в оболочку, как показано в следующем примере:
STDAPI DllRegisterServer()
{
return AMovieDllRegisterServer2( TRUE );
}
STDAPI DllUnregisterServer()
{
return AMovieDllRegisterServer2( FALSE );
}
Однако в библиотеках DllRegisterServer и DllUnregisterServer можно настроить процесс регистрации при необходимости. Если библиотека DLL содержит фильтр, может потребоваться выполнить дополнительные действия. Дополнительные сведения см. в разделе Регистрация фильтров DirectShow.
В файле определения модуля (DEF) экспортируйте все функции DLL, кроме функции точки входа. Ниже приведен пример ФАЙЛА DEF:
EXPORTS
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
Вы можете зарегистрировать библиотеку DLL с помощью служебной программы Regsvr32.exe.
Связанные темы