Вы не можете передать объект C ++ в javascript; что вы можете сделать, это передать NPObject, который также является объектом C ++ и предоставляет доступ через интерфейс NPRuntime.
См. http://npapi.com/tutorial3 для получения дополнительной информации.
Вы также можете посмотреть на FireBreath фреймворк, который значительно упрощает подобные вещи.
Редактировать : кажется, я неправильно понял ваш вопрос. Вам нужно иметь возможность хранить данные, связанные с экземпляром плагина. Что вам нужно, так это NPP, который вы получаете при создании вашего плагина; АЭС состоит из двух членов: ndata (данные netscape) и pdata (данные плагинов). Вы можете контролировать указатель pdata - вы можете установить его так, чтобы он указывал на любое произвольное значение, которое вы хотите, а затем приводить его к реальному типу всякий раз, когда вы захотите его использовать. Обязательно приведите его обратно и удалите на NPP_Destroy, конечно. Я обычно создаю структуру, чтобы хранить в ней несколько частей информации. FireBreath использует это и отправляет все вызовы плагинов в экземпляр объекта Plugin, чтобы вы могли действовать так, как будто это обычный объект.
Пример соответствующего кода из FireBreath:
https://github.com/firebreath/FireBreath/blob/master/src/NpapiCore/NpapiPluginModule_NPP.cpp#L145
Обратите особое внимание на NPP_New и NPP_Destroy; Также обратите особое внимание на то, как используется элемент pdata на АЭС.
Это также обсуждается в http://npapi.com/tutorial2