2014-01-12 6 views
0

Я хочу использовать плагин NPAPI в своем приложении, и я создал функции, предоставляемые браузером для плагина. Загружать библиотеку, инициализировать и запускать, все идет хорошо, пока не дойдет до функции NPP_New. Эта функция вызывает сбой, потому что указатель NPP (вместо этого указывает вместо 0 - функция возвращает код ошибки 2 «Invalid Instance», а не сбой). Я думаю, что есть проблема с доступом к памяти. Нашел несколько способов совместного использования памяти, но я не знаю точно, что подходит в этом случае.Использование плагина NPAPI в моем приложении

// ... 
char szMimeType[] = "application/x-some-plugin"; 
NPP_t npp; npp.pdata = 0; npp.ndata = &npp; 
UINT result = NPP_New(szMimeType, &npp, NP_FULL, 0, 0, 0, NULL); 
// ... 
+0

Какой вид аварии вы получаете? Использование npp как отправленное не должно разрушать что-либо - вы уверены, что это не проблема, связанная с доступом к неправильной настройке таблиц указателей функций или сбой приложения в функциях NPN, вызываемых из NPP_New? –

+0

Документы для NPP_New говорят, что '' NPP_New' создает новый экземпляр подключаемого модуля. Он вызывается после 'NP_Initialize'. Я не вижу вашего вызова 'NP_Initialize' – woolstar

+0

Мои действия:' LoadLibrary() '-> возвращает действительный дескриптор; 'GetProcAddress()' для "NP_GetEntryPoints" и "NP_Initialize" -> возвращает действительные указатели; 'NP_GetEntryPoints()' -> возвращает 'NPERR_NO_ERROR'; 'NP_Initialize()' -> возвращает 'NPERR_NO_ERROR'; 'NPP_New()' -> сбой «Необработанное исключение» 0x77e615de в «MyApp.exe»: 0xC0000005: нарушение прав доступа. «Если вызов« NPP_New (szMimeType, 0, NP_FULL, 0, 0, 0, NULL) »-> retruns 'NPERR_INVALID_INSTANCE_ERROR', а не сбой; – Slinner

ответ

0

@Georg Fritzsche, вы были правы! Проблема заключалась в указаниях на функции NPN_. Переменная NPNetscapeFuncs pNpnFuncs создает и заполняет локально в одной из моих функций и, таким образом, уничтожается по завершении функции. Когда я сделал pNpnFuncs глобальную переменную - все было в порядке.

Смежные вопросы