Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
Rotinas de FSCTRL do Oplock:
- Minifiltros: FltOplockFsctrl, FltOplockFsctrlEx
- Filtros herdados e sistemas de arquivos: FsRtlOplockFsctrl, FsRtlOplockFsctrlEx, FsRtlUpperOplockFsctrl
Rotinas de quebra de verificação do Oplock:
- Minifiltros: FltCheckOplock, FltCheckOplockEx
- Filtros herdados e sistemas de arquivos: FsRtlCheckOplock, FsRtlCheckOplockEx, FsRtlCheckOplockEx2, FsRtlOplockBreakH
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:
- IRP_MJ_CREATE com o conjunto de bits FILE_OPEN_REQUIRING_OPLOCK definido em Create.Options
- IRP_MJ_FILE_SYSTEM_CONTROL com controles de oplock
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.