« Gecko Plugin API Reference « Plug-in Side Plug-in API
概要
プラグインの特定のインスタンスを削除します。
文法
#include <npapi.h> NPError NPP_Destroy(NPP instance, NPSavedData **save);
パラメータ
この関数は以下のパラメータを取ります:
- instance
- 削除するプラグインのインスタンスへのポインタ。
- **save
- このプラグインの同じ URL にある新しいインスタンス用に保存する状態や他の情報。NPP_New に渡します。
戻り値
- 成功すれば、この関数は
NPERR_NO_ERROR
を返します。 - 失敗すれば、プラグインは読み込まれず、この関数はエラーコードを返します。返しうる値については、エラーコードを参照してください。
説明
NPP_Destroy
はプラグインに結びつけられたインスタンスのデータやリソースを解放します。プラグインのインスタンスが削除されたとき、典型的にはユーザがページを去ったとき、ウィンドウを閉じたとき、プラウザを終了したときに、ブラウザはこの関数を呼びます。このときにプラグインの instance->pdata
に保存されているプライベートのインスタンス固有の情報をすべて削除すべきです。
この関数がプラグインの最後のインスタンスを削除することになるならば、続いて NP_Shutdown が呼ばれます。NP_Shutdown を使うことで、NP_Initialize で割り当てられプラグインのすべてのインスタンスで共有することを意図したすべてのデータを削除してください。
状態や他の情報の一部を保存して再利用したければ、オプションの save
パラメータを使ってください。ユーザが前のページに戻った際には、この情報はプラグインの新しいインスタンスが NPP_New で作成されたならば、この情報はそのインスタンスに渡されます。
この関数で重要な情報を保存しようとするのは避けてください。 NPP_Destroy
が戻ったとき NPSavedData 構造体の buf
フィールドの所有はプラグインからプラウザへと渡されます。ブラウザはフィールドのサイズやユーザのページ履歴のような恣意的な基準に基づいてこのデータを保存することができますし、するでしょう。
保存されたデータが捨てられたときにブラウザがクラッシュしたりメモリがリークしないようにするため、NPSavedData の buf
フィールドは NPN_MemAlloc で割り当てられたフラットな構造体(割り当てられたサブ構造体をもたない単純な構造体)であるべきです。
Mac OS
このプラグインが後で再作成されたとき状態情報を元に戻したいならば、NPSavedData 構造体を作成するために NP_MemAlloc を使ってください。
注:インスタンスのウィンドウはもはや有効であると保証されていないので NPP_Destroy
内ではいかなる描画操作も行なうべきではありません。