サイズが 192k のファイルがあり、ファイルの中央をロックしたいと考えています。
例) c#で64k~128kのファイルをロックしたい。ファイルのその部分をロックする方法はありますか?
LockFileExを使用する必要があります
呼び出しプロセスによる排他的アクセスのために、指定されたファイルをロックします。この関数は、同期または非同期のいずれかで動作し、排他ロックまたは共有ロックを要求できます。
共有ロックを探しています。
[DllImport("kernel32.dll")]
static extern bool LockFileEx(IntPtr hFile, uint dwFlags, uint dwReserved,
uint nNumberOfBytesToLockLow, uint nNumberOfBytesToLockHigh,
[In] ref System.Threading.NativeOverlapped lpOverlapped);
Windows APIのLockFile関数を調べることをお勧めします。同じページにもLockFileEx
機能が記載されています。わーい!いじくり回してたくさんの楽しみを持っています;)
pinvoke サイトには次のページがあります: http://www.pinvoke.net/default.aspx/kernel32.lockfile
を使用してファイルの一部をロックすることはできませんSystem.IO
。ファイルに開いているハンドルがある場合、ファイル全体がロックされます。
これは、WinAPI を使用して行うことができます。