DllDetachFunc_After_Hm866 の挙動追加願No.09591
vscode-life さん 17/11/21 22:53
 
いつもお世話になっております、vscode-life です。

DllDetachFunc_After_Hm866 の挙動追加願いとなります。

以下を判別したいと考えています。

DllDetachFunc_After_Hm866が、

 @「マクロコントロール下」で(明示的・暗黙的に)呼び出されたものなのか、

 Aそれとも、マクロコントロール外で秀丸が(アプリ終了時に)
 呼び出したものなのか


・「マクロ実行中」という関数では正確な判別は出来ません。
 (自プロセスではなく、他プロセスがマクロ実行中でも真が返るため)

やりたいこととしては、

・マクロ内での(明示的・暗黙的)freedll
・秀丸終了に伴うガチのdllの後始末

というのをdll側で認識して、挙動を変更したい、ということになります。

判別方法としては、

- DllDetachFunc_After_Hm866(inptr_t freestate)

的なもので良いのではないかと思います。
(cdeclなので、既存の引数記載してないプログラムにも影響無いですし)

以上となります。

ご検討ください。

[ ]
RE:09591 DllDetachFunc_After_Hm866 の挙No.09592
秀丸担当 さん 17/11/22 08:08
 

確かにfreedllで明示的に開放したものか、ロードしっぱなしで最後に自動開放
されたものかは正確にはわかりませんでした。
言われている通りパラメータを追加してもcdeclなので問題ないと思います。
もともと従来からパラメータの値として0が入っています。

終わり方は3種類あって、freedllのときと、loadll(文のほう)で自動的に別の
DLLに置き換えられるときと、プロセス終了時があります。
それぞれ1,2,3という値でわかるようにしようと思います。

[ ]
RE:09592 DllDetachFunc_After_Hm866 の挙No.09593
vscode-life さん 17/11/22 12:34
 
よろしくお願い致します。

[ ]
RE:09592 DllDetachFunc_After_Hm866 の挙No.09597
vscode-life さん 17/11/27 15:07
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>それぞれ1,2,3という値でわかるようにしようと思います。

こちら、 V8.77β6 で確認しました。

1,2,3 ともに単発プロセス時、複数プロセス時 とも、
誤認識することなく動作してると思います。

(8.66〜8.77β6未満でも0が入っているので、判別もしやすいです)


今回の処理追加によって、

・dll側の「軽度環境初期化」と「最終解放」の区分け

・解放するべきでないdllをユーザーが(良かれと思って勘違い等で)解放した際に、
 「このdll勝手に解放するべからず」とdll自身が警告を出す

などが出来るようになりました。
ありがとうございます。

[ ]
RE:09597 DllDetachFunc_After_Hm866 の挙No.09598
秀丸担当 さん 17/11/27 16:22
 

正常に動作しているとのことでよかったです。
ご確認ありがとうございます。

[ ]