VC++6.0を使用しています。
h = CreateFile(filename, openF, 0, NULL, createF, 0, NULL);
でファイルハンドルを開くと、3番目の引数(共有モード)が0になっているため
このファイルを閉じないかぎり、このファイルを開くことはできないと思います。
しかしながら、再びCreateFileを使用することで開けてしまいました。
アプリケーションが終了する際にはOSが開いたままのファイルハンドルを
閉じるというようなことをどこかで見たよな気がするのですが、
今回はアプリケーションを終了させていません。
スレッドが終了する際に、開いたままになっていたファイルハンドルを閉じる
というようなことがありますでしょうか?
MSDN見ました
キーワード「CreateFile」で
見つけた「プラットフォーム SDK: ファイル入出力」には
>openF
こんなパラメータの指定の仕方載ってませんでした
>createF
こんなのもありませんでした
どんなタイトルの解説に乗っているんでしょうか
すみません、3番目の引数以外は重要ではないと思って、
任意の値のつもりでした。
例えば2番目の引数はGENERIC_READ、
5番目の引数はOPEN_EXISTINGの場合です。
> h = CreateFile(filename, openF, 0, NULL, createF, 0, NULL);
filenameが違っている、という落ちじゃないですよね。
> h = CreateFile(filename, openF, 0, NULL, createF, 0, NULL);
失敗時の戻り値INVALID_HANDLE_VALUEは((HANDLE)(-1))ですけど、
if (h) {
// オープン成功
}
というような判定をしていませんか?
すみません・・。
昨日は確かにOPENできていたはずなのですが、
今日試してみるとOPENできません。
残業続きで夢をみていたのかもしれません。
駄スレを作ってしまって申し訳ないです。
ヒントを下さったみなさまありがとうございました。