Compartilhar via


Sincronização de Oplock

Filtros e sistemas de arquivos que solicitam bloqueios oportunistas exclusivos (oplocks) devem sincronizar chamadas no pacote de bloqueios oportunistas fornecido pelo sistema. Em particular, as chamadas para rotinas FSCTRL oplock (para estabelecer oplocks), devem ser sincronizadas em relação a chamadas para rotinas de quebra de verificação oplock. Uma lista dos dois conjuntos de rotinas inclui:

Ao processar uma solicitação oplock, os filtros e os sistemas de arquivos devem garantir o seguinte:

  • Uma E/S que possa interromper um oplock não pode ocorrer em paralelo com o processamento da solicitação.
  • As solicitações de "oplock" não podem ocorrer simultaneamente com as confirmações de quebra de "oplock".

As chamadas IRP que solicitam a criação de oplocks exclusivos para o mesmo bloco de controle de arquivo (FCB) são:

Veja a seguir alguns exemplos de sincronização de oplock:

  • Ao processar uma solicitação de oplock, um sistema de arquivos adquiria um recurso de forma exclusiva, chamava FsRtlOplockFsctrlEx e liberava o recurso.

  • Ao processar uma confirmação de interrupção de oplock, o sistema de arquivos adquiriria o mesmo recurso compartilhado, chamaria FsRtlOplockFsctrlEx e liberaria o recurso.

  • Ao executar a E/S, o sistema de arquivos adquiriria o mesmo recurso compartilhado, chamaria FsRtlCheckOplockEx2, executaria a E/S e liberaria o recurso.

    Os sistemas de arquivos superiores devem garantir que eles sincronizem entre chamadas de FsRtlCheckUpperOplock e FsRtlUpperOplockFsctrl de maneira semelhante.