Oplock 同步

请求 独占机会锁 (oplock) 的筛选器和文件系统必须将调用同步到系统提供的 oplock 包中。 具体而言,对 oplock FSCTRL 例程的调用 (建立 oplock) ,必须与对 oplock 检查中断例程的调用进行同步。 这两组例程的列表包括:

处理 oplock 请求时,筛选器和文件系统必须确保以下各项:

  • 可能中断 oplock 的 I/O 不能与处理请求并行发生。
  • Oplock 请求不能与 oplock 中断确认同时发生。

请求为同一文件控制块创建独占 oplock 的 IRP 调用 (FCB) 为:

下面是 oplock 同步的一些示例:

  • 处理 oplock 请求时,文件系统会以独占方式获取一些资源,调用 FsRtlOplockFsctrlEx 并释放该资源。

  • 处理 oplock 中断确认时,文件系统将获取共享的同一资源,调用 FsRtlOplockFsctrlEx 并释放该资源。

  • 执行 I/O 时,文件系统将获取共享的同一资源,调用 FsRtlCheckOplockEx2,执行 I/O 并释放资源。

    上层文件系统应确保它们以类似的方式在 FsRtlCheckUpperOplockFsRtlUpperOplockFsctrl 调用之间同步。