私はファイルをロックした後にコピーしようとしています!しかし、私はGetLastError()= 32を取得しました。 "プロセスは別のプロセスで使用されているため、ファイルにアクセスできません。"LockFileExの後にファイルをコピーすることはできますか?
最初にロックされたため、ファイルを使用している同じプロセスですか?私はマルチプロセスアプリケーションで作業していて、LockFileExを使用して他のプロセスを除いて、等価ファイル情報を処理します。また、私はLockFileExのドキュメントを読んでいて、LockFileExをロックした後にCopyFileに不可能なことを見つけられませんでした。
HANDLE cfile;
bool alreadyExistFile = FALSE;
OVERLAPPED sOverlapped;
sOverlapped.Offset = 1;
sOverlapped.OffsetHigh = 0;
cfile = CreateFile(TEXT("CounterSeedAssincrono.csv.csv"),
GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL);
LockFileEx(cfile, LOCKFILE_EXCLUSIVE_LOCK |
LOCKFILE_FAIL_IMMEDIATELY, 0, 10000, 0, &sOverlapped);
CopyFile(TEXT("CounterSeedAssincrono.csv"),
TEXT("CounterSeedAssincrono_A.csv"), alreadyExistFile);
if (alreadyExistFile == FALSE)
cout << "CopyFile Failed -> " << GetLastError() << endl;
UnlockFileEx(cfile, 0, 10000, 0, &sOverlapped);
CloseHandle(cfile);
私は何をしようとしているのですか?
引用:「ロック処理がファイルをもう一度開くと、領域をロック解除するまで、この2番目のハンドルで指定された領域にアクセスできません。うん、それはCopyFileがすることだ。 –
はい、ありがとうございます。私はすべての命令の後に問題を解決するだけでCopyFile、しかし私の論理問題は続く。実際には、名前を変更するファイルに似た何かが必要です。ただ一つの関数名を変更するだけで複数のプロセスがそれを行うことができます。 – GLMF