【问题标题】:How to lock file in Windows?如何在 Windows 中锁定文件?
【发布时间】:2010-05-05 08:14:25
【问题描述】:

如何在 Windows 中锁定文件,使该文件只能由一个进程打开/读取/写入?

我发现通过将0 赋予dwShareMode 标志,可以使用CreateFile 锁定文件。它有效,但只有返回的句柄可用于处理文件。但我希望能够将文件锁定到其他进程,同时在我的进程中创建多个句柄。

请帮我解决这个问题或提供一些提示...

【问题讨论】:

    标签: c++ c winapi


    【解决方案1】:

    为什么需要在同一个进程中创建两次同一个文件?您可以在进程的所有 I/O 函数中使用一个句柄,而无需重新打开文件。如果您需要将句柄传递给另一个进程,您可以使用DuplicateHandle 函数。

    【讨论】:

    • 我正在使用各种库,它们在其中调用 CreateFile,但由于文件被锁定而失败。所以我想知道是否可以为其他人锁定文件,但不能为我的进程锁定。
    • 您的选择是将句柄传递给库或不锁定文件。
    【解决方案2】:

    我认为你做不到。最接近的方法是第一次使用 CreateFile 打开/锁定文件,然后使用 DuplicateHandle 从已有的句柄创建多个句柄

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      相关资源
      最近更新 更多