システムによるファイルハンドルの自動解放 – プログラミング – Home

システムによるファイルハンドルの自動解...
 
通知
すべてクリア

[解決済] システムによるファイルハンドルの自動解放


平井
 平井
(@平井)
ゲスト
結合: 24年前
投稿: 48
Topic starter  

VC++6.0を使用しています。

h = CreateFile(filename, openF, 0, NULL, createF, 0, NULL);

でファイルハンドルを開くと、3番目の引数(共有モード)が0になっているため
このファイルを閉じないかぎり、このファイルを開くことはできないと思います。

しかしながら、再びCreateFileを使用することで開けてしまいました。
アプリケーションが終了する際にはOSが開いたままのファイルハンドルを
閉じるというようなことをどこかで見たよな気がするのですが、
今回はアプリケーションを終了させていません。

スレッドが終了する際に、開いたままになっていたファイルハンドルを閉じる
というようなことがありますでしょうか?


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

MSDN見ました
キーワード「CreateFile」で
見つけた「プラットフォーム SDK: ファイル入出力」には
>openF
こんなパラメータの指定の仕方載ってませんでした

>createF
こんなのもありませんでした

どんなタイトルの解説に乗っているんでしょうか


返信引用
平井
 平井
(@平井)
ゲスト
結合: 24年前
投稿: 48
Topic starter  

すみません、3番目の引数以外は重要ではないと思って、
任意の値のつもりでした。

例えば2番目の引数はGENERIC_READ、
5番目の引数はOPEN_EXISTINGの場合です。


返信引用
ボコノン教徒
 ボコノン教徒
(@ボコノン教徒)
ゲスト
結合: 22年前
投稿: 90
 

> h = CreateFile(filename, openF, 0, NULL, createF, 0, NULL);

filenameが違っている、という落ちじゃないですよね。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> h = CreateFile(filename, openF, 0, NULL, createF, 0, NULL);

失敗時の戻り値INVALID_HANDLE_VALUEは((HANDLE)(-1))ですけど、
if (h) {
// オープン成功
}
というような判定をしていませんか?


返信引用
平井
 平井
(@平井)
ゲスト
結合: 24年前
投稿: 48
Topic starter  

すみません・・。

昨日は確かにOPENできていたはずなのですが、
今日試してみるとOPENできません。
残業続きで夢をみていたのかもしれません。

駄スレを作ってしまって申し訳ないです。
ヒントを下さったみなさまありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました