中断机会锁

打破机会锁是降级一个客户端对文件拥有的锁的过程,以便另一个客户端可以使用或不使用机会锁打开该文件。 当另一个客户端请求打开操作时,服务器会延迟打开操作,并通知持有机会锁的客户端。

然后,持有锁的客户端会执行适合锁类型的操作,例如放弃读取缓冲区、关闭文件等。 仅当持有机会锁的客户端通知服务器完成此操作时,服务器才会打开请求打开操作的客户端的文件。 但是,当 2 级锁损坏时,服务器会向客户端报告它已损坏,但不等待任何确认,因为没有要刷新到服务器的缓存数据。

在确认任何排他锁 (筛选器、级别 1 或批) 中断时,断开锁的持有者无法请求另一个独占锁。 它可以将排他锁降级到级别 2 锁或完全没有锁。 持有者通常会在即将关闭文件时释放锁并关闭文件。

通过使用与断开锁的文件关联的 OVERLAPPED 结构的 hEvent 成员,通知应用程序机会性锁已中断。 应用程序还可以使用 GetOverlappedResultHasOverlappedIoCompleted 等函数。