私のWindowsプログラムは、別のプログラムからディレクトリ/ファイルインターフェイスを介して情報を受け取ります。 これは、他のプログラムがファイルを特別なディレクトリにドロップすることです。私のプログラムは定期的にディレクトリをスキャンし、ファイルを見つけて処理してから削除します。排他アクセス用に開いたファイルを同じプロセスで削除する
私はCreateFile()関数を使ってこのようなファイルを開きます。他のプログラムがファイルへの書き込みを終了し、それを閉じたことを保証するために、私はdwShareModeパラメータを0に設定します。CreateFileが共有エラーで失敗した場合は、次の繰り返しまでファイルをスキップします。
問題は、プログラムでファイルを開いているときに、ERROR_SHARING_VIOLATIONエラーが発生して、DeleteFile()が失敗するという問題です。
削除する前にファイルを閉じることができましたが、ファイルを削除する直前に別のプログラムがファイルを開く可能性は避けてください。排他的にそれを削除したファイルを開いて、他のプログラムがopenningとファイルをdeletetingの間で干渉しないことができるように:
は、私はファイル
CreateFile(filePath,DELETE|FILE_READ_DATA,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)
それは私が欲しいものを達成することが可能である
を開くには、このコードを使用します。