Что я видел до сих пор, может быть только один плагин для DLL-файла, это правильно?
Нет, вы можете иметь несколько плагинов, реализованных в одной DLL.
Браузер вызывает NP_GetEntryPoints, NP_Initialize и NP_Shutdown только «один раз» для каждой DLL, правильно?
Только один раз за процесс и загрузку (имейте в виду, что он будет выгружен, когда экземпляр больше не будет жив).
То, что я стремлюсь, заключается в создании нескольких плагинов в одной динамической библиотеке. Это возможно, и если, как?
Это возможно. Вы просто регистрируете разные типы сопоставлений для одной и той же динамической библиотеки (например, в нескольких записях Mimetype Windows в реестре, указывающих на одну и ту же DLL).
NPP_New()
получает NPMIMEType
как первый параметр, который позволяет определить, какой «плагин» был запрошен.
Также необходимо настроить NP_GetMIMEDescription()
(используется в Linux и Mac OS).
В Windows у вас должен быть список типов mimetypes, разделенных |
, в информации о версии (запись MIMEType
).
Если вы еще не наткнулись, взгляните, что [Firebreath] (http://firebreath.org) соответствует вашему проекту. –
Даже если FireBreath не соответствует вашему проекту, он поддерживает несколько типов mimetypes - вы можете создать плагин firebreath и прореживать, как он это делает. – taxilian