GUID構造体のアラインメント

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

GUID構造体のアラインメント

#1 投稿記事 by hira »

プロセスデバッガでGUID構造体にアクセスすると、Data2が「アクセスできません」となります。
Include\api_system.sbpでの構造体定義に「Align(2)」を加えると正しく使用できるようになりましたので、次回バージョンアップで変更していただければ幸いです。
山本
Site Admin
記事: 535
登録日時: 2005年5月30日(月) 15:08
連絡する:

#2 投稿記事 by 山本 »

どのような状況のソースコードでしょうか?というのも、GUID構造体の定義そのものには不具合は見つからず、Align(2)とする必要性はありません(デフォルトでは、構造体アラインメントは各メンバサイズとなります)。

「アクセスできません」というのは、メモリを読み込もうとするとアクセス違反が起きてしまう場合に限られますので、もう少し、詳しい状況をお聞かせいただけると助かります。
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

#3 投稿記事 by hira »

どのような状況のソースコードでしょうか?というのも、GUID構造体の定義そのものには不具合は見つからず、Align(2)とする必要性はありません(デフォルトでは、構造体アラインメントは各メンバサイズとなります)。
確かに、単にGUID構造体を宣言しただけでは問題ないようですね。
少し慌てすぎたようです(^^;

ということで、GUID構造体が「アクセスできません」となるコードを書いておきます。どこかのサンプルを拾って書いてみたものです。
※「CoInitialize」を呼び出す前の段階ですでに「アクセスできません」となります
※ #prompt を書かない(QueryInterfaceの戻り値の Print も消す)とエラーが起こらなくなるようです
山本
Site Admin
記事: 535
登録日時: 2005年5月30日(月) 15:08
連絡する:

#4 投稿記事 by 山本 »

どうやら、コンパイル直後のデバッグで「アクセスできません」になるようですね。

色々と検証した結果、デバッグ用の中間ファイルに原因を見つけることが出来ました。次回のバージョンアップで修正しますので、今しばらくお待ちください。
返信する