前書
ここでは、SHIORI、SAORI、MAKOTO、PLUGIN、HEADLINE等各サブシステムのコアとなる、DLLファイルに要求される仕様をまとめています。
エクスポート関数群
以下C言語での例
- extern "C" __declspec(dllexport) BOOL __cdecl load(HGLOBAL h, long len);
- extern "C" __declspec(dllexport) BOOL __cdecl unload(void);
- extern "C" __declspec(dllexport) HGLOBAL __cdecl request(HGLOBAL h, long *len);
☆Borland系C/C++コンパイラでは_loadのように頭にアンダースコアがつくようですがそちらにも対応した方が良いでしょう。
load
読み込み時にコールされます。HGLOBALにDLLの入るディレクトリのパスが入ります。
GlobalAlloc(GMEM_FIXED,xxx) されたものなのでそのままポインタ(char *)にキャストして利用してください。
また、必ずDLL側でGlobalFreeしてください。
返り値は常にtrueです。
規定ではロード失敗時にfalseですが、falseを返しても何も処理されません。
unload
DLL開放直前(=SSP/CROW終了時+上書きインストール時、DLL_PROCESS_DETACH前)にコールされます。
返り値は常にtrueです。
規定では開放失敗時にfalseですが、falseを返しても無視されます。
request
ロード・アンロード以外の処理はすべてここで行われます。
注意事項はloadと同じです。
返り値はこのDLLが実装するサブシステム(SHIORI,SAORI,PLUGIN,...)の種類によります。
レスポンス用の返り値HGLOBALも、GlobalAlloc(GMEM_FIXED,xxx)で確保されたものにしてください。