HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0409
naznyarkHSPプラグインの 3.1b8 での互換性4解決


naznyark

リンク

2007/4/9(Mon) 00:50:44|NO.7186

HSP3.1b8 で HSPEXINFO構造体が拡張され、それに伴い HSPCTX構造体の
内部構造が変化しているので HSPCTX の一部のメンバー
(exinfo よりあとにあるもの)にアクセスしているプラグインは
HSPSDK3.1b8 を使って HSP3.1b8 専用にビルドしたものでないと正常に
動作しません。



この記事に返信する


naznyark

リンク

2007/4/9(Mon) 01:08:44|NO.7189

以下要望。

仕様変更(拡張)するなら将来の HSPEXINFO の拡張に伴う同種の手間を
避けるために HSPCTX を構造体を直接メンバーにするのではなく
ポインタをメンバーにするように仕様変更して欲しいです。



Irisawa

リンク

2007/4/9(Mon) 01:39:32|NO.7190

WinAPIの構造体では後の拡張に対応するために構造体のサイズを格納するメンバが最初に
存在します(WNDCLASSEX構造体など)。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowclasses/windowclassreference/windowclassstructures/wndclassex.asp

こういう風にしておけば最初から問題がなかったのですけどね。
今からやるとまた互換性なくなるんですけど、今後の後方互換性を考えると必要だと思い
ます。



kz3

リンク

2007/4/9(Mon) 02:07:57|NO.7195

いや、構造体そのものの拡張が問題ではなくて、

>typedef struct HSPCTX
>{
> HSPHED *hsphed;
> HSPEXINFO exinfo; // HSPEXINFO構造体の最後のメンバの拡張自体が問題ではなく...
> int runmode; // HSPEXINFO構造体以降のメンバのオフセットが変わってしまうのが問題だという意見。

HSPEXINFO構造体のサイズをメンバに含めたとしても、HSPEXINFO構造体が膨らめば、それ以降のメンバのオフセットも変わってしまいます。
(HSPEXINFO構造体から見れば構造体の後ろのメンバだが、HSPCTX構造体から見れば途中にメンバを挿入するようなもの)

exinfoメンバをHSPEXINFO構造体へのポインタにすればHSPEXINFO構造体の仕様変更にそのほかのメンバのオフセットが左右されない、ということだと思います。



おにたま(管理人)

リンク

2007/4/10(Tue) 22:08:33|NO.7230

ご指摘ありがとうございます。
確かにその通りでした。HSPCTXの作り方がまずかったですね。
とりあえず、HSP3.0との互換を取りながら、拡張されたポインタを取得できるように修正する方針です。
取り急ぎ、プラグインの互換を取ったバージョンを以下にテストとして置いてありますので、
プラグイン等で不具合が出て検証ができない場合はお使い下さい。
近いうちに、現在公開中のβ8も新しいバージョンに差し替えたいと思います。
http://www.onionsoft.net/hsp/file/hsp31b9.lzh
http://www.onionsoft.net/hsp/file/hspsdk31b9.lzh



ONION software Copyright 1997-2021(c) All rights reserved.