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

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: APIの引数にキャストした値を渡したとき

by 山本 » 2006年5月03日(水) 15:56

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

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

by hira » 2006年4月18日(火) 22:22

コード: 全て選択

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で確認。調査をお願いします。

ページトップ