DLL

少しなでしこから離れてDelphiプログラミング
今年の初めに掲げた目標の一環で「なでしこで栞」というものに挑戦してみるつもりです
とりあえずなでしこではDLLがつくれないのでラッパーDLLを制作中です
 
で、いきなりの壁なんですが「どうやってDLLからEXEを制御するか」です
いちいちDLLからShellExecuteで引数設定して起動しまくるのはナンセンスな気がしますし……
そこで私が考えたのはMutexとFileMappingObjectとWaitForSignalObjectを使い倒す作戦
EXEをリクエストが来るまでDLLが取得したMutexに対してWaitForSignalObjectのINFINITEで待機し、リクエストが来るとDLLはFMOにメモリアドレスを設定、Mutexを解放、自身はEXEが取得したMutexに対してWaitForSignalObjectで待機
EXEは処理終了後、終了したことをDLL関数(引数は返り値(メモリアドレス))にて通知(このときDLLはMutexを取得)、Mutexを解放してDLLの処理を続けさせる、EXEは再びWaitForSignalObjectで待機
と、こういうものです
……「終了したことをDLL関数にて通知」というのがきちんと処理できるかどうか不安なんですよね
まぁなくてもDLLに返すメモリアドレスをFMOに入れてDLLに処理を返せばいい気もしますね
そしてもう一つ、大きな不安があります
「Mutexの取得タイミングはWaitForSignalObjectまでに間に合うか?」という問題です
うーん、MutexをDLL用、EXE用、その他用と三つを駆使すればいける………かな?