ページ 11

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

Posted: 2006年4月18日(火) 22:22
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で確認。調査をお願いします。

Posted: 2006年5月03日(水) 15:56
by 山本
ご報告ありがとうございます。次回のバージョンアップで修正しますので、今しばらくお待ちください。