ReadDirectoryChangesWを使用してフォルダーをスパイしています。大きなファイルをフォルダーにコピーしている場合、複数のFILE_ACTION_MODIFIEDメッセージを受信できます。ウィンドウがファイルの大きなチャンクを書き込むたびに、それぞれのファイル変更通知を受け取るようです。時間。CreateFile APIを使用して、ファイルをAPで開くことができるかどうかを確認しようとしましたが、一部のファイルは常に他のAPによってロックされています。たとえば、Outlookを開いている場合、PSTは更新されますが、APは更新できます。アクセスしないでください。シャドウコピーを開始して開く必要があります。だから私の質問は、ファイルがコピーを終了したことを知る方法ですか?
2986 次
3 に答える
1
これは非常にハッキーな性質のソリューションですが、非常に厄介な状況では、ポーリングループを実行して、ファイルのサイズ(または変更日)を確認できます。しばらく変わらない場合は、ファイルのコピーが終了したと考えて差し支えありません。
編集:これは平均的なケースでは最適なソリューションではありませんが、OPのケースでは、問題の制約によってより良いソリューションが除外されることを考慮してください。反対票を投じる前に、これについて考えてください。
于 2009-02-18T03:02:20.367 に答える
0
ファイルのサイズをポーリングするときは、使用しないでください_stat/_stat64
。代わりに、必要なたびにファイルを開き、 を呼び出し_filelengthi64
てファイルのサイズを取得します。によって返されるファイル サイズは_stat64
、Windows オペレーティング システムによってリアルタイムで更新されません。また、ファイルを開くことができることで、長いコピー操作が完了したことをテストしています。
于 2011-05-07T06:20:45.433 に答える