大きなデータを読み書きするプログラムがあります。読み取りと書き込みは、書き込みがローカル ドライブ上のファイルに対して行われる場合にうまく機能します。ターゲットがネットワーク共有で、同じプログラムの 2 つのインスタンスを実行すると、最初に起動したプログラムが WriteFile でハングします。デバッグすると、ネットワーク共有の WriteFile がブロックされます。
WaitForSingleObject(timeout 60 Sec) を使用して、WriteFile にオーバーラップ IO を実装しました。現在、WriteFile はブロックされなくなりましたが、データ全体がネットワーク経由で 1 回書き込まれることはありません。ネットワーク共有経由で WriteFile を使用する場合、再試行を考慮する必要がありますか?? ネットワーク上のファイルで WriteFile を適切に使用するには?
アップデート:
以下のリンクを参考に、WriteFile でオーバーラップした IO を実装しました。
http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/a5e9514b-53e0-410c-a975-41a5ca91e4be
リンクには、GENERIC_READ なしで GENERIC_WRITE だけで CreateFile を使用したことが示されています。しかし、ファイルからも読み取りたい場合はどうなりますか?それは、WriteFile に ayn io をまったく実装できないことを意味しますか? 実際には、重複した IO を使用してファイルに書き込む前に、同じファイルからヘッダーを読み取る必要があります。これどうやってするの??