ファイルをロックする方法【Windows API】

ログファイルなどプログラムの実行中に他のプロセスから変更されると都合の悪いファイルがあります。 ファイルのロックを行なうとロック処理を行なったプロセス以外からはファイルの操作ができなくなります。 ロックはファイルの1部分を指定して行なうことができるが、基本的にはファイル自体をロックすることが多いでしょう。 細かいロックが必要なファイル操作を行なうくらいならば大人しくデータベースに頼った方が良い。 ロックしたファイルは必ず解除してから終了しましょう。

HANDLE hFile;

hFile = CreateFile(    "D:\\TEST.TXT", GENERIC_READ, 0, NULL, 
                    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hFile != INVALID_HANDLE_VALUE) {

    LockFile(hFile, 0, 0, 0xFFFFFFFF, 0xFFFFFFFF);
    printf("[ファイルロック中]\n");

    // ここでファイルの書き込み処理などを行なう
    Sleep(30000);

    UnlockFile(hFile, 0, 0, 0xFFFFFFFF, 0xFFFFFFFF);
    printf("[ファイルロック解除]\n");

    CloseHandle(hFile);

}

 

Windows API

Posted by @erestage