- blogs:
- cles::blog

SMB 経由でフォルダを監視しているとファイルが存在しないと言われることがある

SMB 2.0 (いわゆる、Windows のネットワーク共有)のフォルダをプログラムで監視していると、他のクライアントからファイルを作成した場合に、ファイルが認識できるまでに若干タイムラグがあることに気づいたので調べてみたら、なんとこれは MS 的には仕様ということになっていました。
Windows の クライアントから SMB 2.0 の通信で、共有フォルダに作成したファイルへのアクセスがエラーになる場合がある
クライアントから、SMB 2.0 の通信でサーバー上の共有フォルダにファイルを作成後、File.Exists、_access、GetFileAttributes、FindFirstFile、FindNextFile、または _stat などの関数で、作成直後のファイルにアクセスすると "ファイルが存在しない" というエラー (NO SUCH FILE など) が発生する場合があります。
もちろんこれはキャッシュがあるためなのですが、SMB2 Client Redirector Caches Explainedによると、レジストリでキャッシュのライフタイムを制御することができるようです。当然、パフォーマンスに影響を与えるので「ファイル情報のキャッシュをオフにすることはお勧めしません」とハッキリ記載されています。
† リンク先は Web Archive !?
MS の公式サイトのリンク先が Web Archive になっていてちょっとびっくりしました。
自分の会社のサイトなのに Web Archive 使っちゃってるんですね。。。。。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/11009
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . リモートデスクトップで Alt + PrtSc と同じことをするには(1184)
3 . RDP のプロトコルを TCP だけに変更する(1003)
4 . Flash Player projector を使って .swf をスタンドアローンで再生する(950)
5 . リモートデスクトップで Ctrl + Alt + Del キーを送信するには(853)