APIの引数にキャストした値を渡したとき

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

APIの引数にキャストした値を渡したとき

#1 投稿記事 by hira »

コード: 全て選択

Dim llLen As QWord,Data As *Byte,Ret As DWord
Dim hFile As HANDLE
Data=calloc(16)
lstrcpy(Data,"testtest")
llLen=8
hFile=CreateFile("test.txt",GENERIC_WRITE,0,ByVal NULL,CREATE_ALWAYS,0,NULL)
WriteFile(hFile,Data,llLen As DWord,VarPtr(Ret),ByVal NULL)
CloseHandle(hFile)
free(Data)
上のように、DWord引数にQWord→DWordのキャスト結果を渡すと、(ByValなので)内容が変わってはいけないhFileの値が変わってしまいます。さらにRetにも入るはずの8が入りません。
SetFilePointerなどでも同じような問題に遭遇したことがあります。
ただ、キャストせずに「強制変換されています」のメッセージが出る状態にした場合は問題ありません。
Ver 4.24.00で確認。調査をお願いします。
山本
Site Admin
記事: 535
登録日時: 2005年5月30日(月) 15:08
連絡する:

#2 投稿記事 by 山本 »

ご報告ありがとうございます。次回のバージョンアップで修正しますので、今しばらくお待ちください。
返信する