C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 40 を表示中)
■19998 / )  ディレクトリの排他アクセス
□投稿者/ れい (588回)-(2008/06/04(Wed) 05:54:58)

分類:[Windows 全般] 

2008/06/04(Wed) 05:55:16 編集(投稿者)

基本的なことで、しかも古い話ですが。

Windowsでファイルを開くとき、共有モードやアクセス権を設定して開きます。
共有しないと設定してファイルを開けば、
他のプロセスからファイルが削除されたり変更されたりすることがないという前提でプログラムを作れます。

ですが、ディレクトリを扱う場合はこれができません。
FindFirstなどで調べるときも、
同時アクセスがあるとどんなエントリが返ってくるのか分かりません。

なぜ、APIには排他的にディレクトリを開く方法が用意されていないのでしょうか?

「OSとしてできないように作られている」というわけではないようです。
NtCreateFileで無理やり操作すると、ディレクトリを排他で開くことができます。

「パフォーマンス」というのはありそうですが、それならファイルも同じです。

作ろうと思えば作れたのに作らなかったわけですし、
opendir/readdirという形が当時主流だったはずで、
FindXXXFileはそれとも違う方法というのも不思議です。
それなりに理由があるはずなのですが…。

嘘でもいいのでなにか合理的な理由を教えてください。
返信 編集キー/


管理者用

- Child Tree -