
*-- To Tell The Truth --*
Cruz
MAIL
HOME
|
 |
2001年07月23日(月) ■ |
 |
虫潰し |
 |
でました、バグ。 実行エラーです。 『ハンドルされていない例外はaaa.exe(KERNEL32.DLL)にあります』
なんじゃあ〜?!それ?? <デバックすること数十分>
犯人はLockFileExであることを突き止める。 LockFileExの各引数の値を確かめてみたり、 webで検索し使用例を探してみたり・・・そんなこんなで数時間。 KERNEL32.DLLについてまで調査しちゃったよ。 (関係がなさそうだということしかわからなかったが)
ふとMSDNライブラリで関数の使用法を再確認したら、 あれ?第6引数ってOVERLAPPED構造体のポインタ・・・? 私は"0"にしていた。 きちんと構造体ポインタにしてあげたら直りました。
旧(バグバージョン) LockFileEx(hAddFile, LOCKFILE_EXCLUSIVE_LOCK, 0, 0, GetFileSize(hAddFile, NULL), 0);
新(修正バージョン) OVERLAPPED ova;
ova.hEvent = 0; ova.Offset = ova.OffsetHigh = 0; // 初期値設定
LockFileEx(hAddFile, LOCKFILE_EXCLUSIVE_LOCK, 0, 0, GetFileSize(hAddFile, NULL), &ova);
この実行エラーはメモリやらの関係で出没するらしく、 毎回必ず出るエラーではありません。 現に、旧(バグバージョン)で正常動作していたときもあるのだから。
それにしてもエラーメッセージ判りにくすぎ。 頼むよMicrosoft・・・・。
|
|