[ttssh2-dev 448] Re: DPIに合わせてアイコンを変更

Back to archive index
NAGATA Shinya maya.****@gmail*****
2022年 6月 15日 (水) 23:39:20 JST


永田です。

>  > - SetVTIconID() に WINAPI がありません。
>  > つけたほうがよいと思われますが、いかがですか?
> つけたほうがよさそうですね。
> いれておきます 。

修正ありがとうございました。


>  > - ttpcmn.def ファイルへの記述

ttssh2-devel 3467 からのスレッドで話したことがありましたね。

本体側から ttpcmn.dll を序数で呼び出している箇所はなさそうです。
# ttpset.dll と ttptek.dll を呼び出している箇所はあります。
# 未知のプラグインからの呼び出しはわかりません。

> シンボルの前後に"_"と"@n"が追加されるのは
> これは関数を呼び出せているのでokかなと思っていました。
> インポートライブラリ(ttpcmn.lib)が
> シンボル名の違いを吸収しているんだと思います。
> 
> GetProcAddress("関数名") ではなく、
> GetProcAddress("_関数名@N") でないと
> アドレスが引けなくなりそうです。
> でもこういう使い方はしなくて、
> プラグインはインポートライブラリ(ttpcmn.lib)
> をリンクするのかなと思います。

なるほど、GetProcAddress() ではなく ttpcmn.lib を使うなら
def に書かなくても大丈夫そう、というわけですね。

> defに指定のないエクスポートしたシンボルの序数は
> 序数の未使用な値を小さい順で利用していくようですね。
> (多分序数はDLL内のエクスポートシンボルリストのインデックスだと思います)
> これが問題がありそうです。
> 
> 削除した関数の序数を使っていない状態とするには
> 新しいシンボルを追加するとき
> 新しく採番してdefに書く必要があるのかもしれないです。
> なかなか面倒ですね・・

- 序数で呼び出してくるプログラム
「過去にあった関数はいちおう残しておく」
「新しい関数にはなくていいでしょ」
「過去に存在したかもしれない関数と同じ序数が出てしまうのはよくない」
という感じでしょうか。

こちらも、ここまで想定しなくていいことかもしれませんが、
- lib なしで直接 GetProcAddress を使って呼び出してくるプログラム
「dll のバイナリからシンボルを調べるときに関数名が分かりやすく出る」
という目的で、def を書いておくというのはどうでしょうか。
上とあわせると、新しい関数にも序数を付けることになる、となってしまう
のですが、どうでしょうか。


-- 
TeraTerm Project https://ttssh2.osdn.jp/
NAGATA Shinya <maya.****@gmail*****>



ttssh2-dev メーリングリストの案内
Back to archive index