Share via


Sincronizzazione dell'oplock

I filtri e i file system che richiedono blocchi opportunistici esclusivi (oplock) devono sincronizzare le chiamate nel pacchetto oplock fornito dal sistema. In particolare, le chiamate alle routine OPlock FSCTRL (per stabilire gli oplock), devono essere sincronizzate con le chiamate alle routine di check-break di oplock. Un elenco di entrambi i set di routine include:

Quando si elabora una richiesta di oplock, i filtri e i file system devono garantire quanto segue:

  • I/O che potrebbe interrompere un oplock non può verificarsi in parallelo con l'elaborazione della richiesta.
  • Le richieste di oplock non possono verificarsi simultaneamente con i riconoscimenti di interruzione di oplock.

Le chiamate IRP che richiedono la creazione di oplock esclusivi per lo stesso blocco di controllo file (FCB) sono:

Di seguito sono riportati alcuni esempi di sincronizzazione di oplock:

  • Quando si elabora una richiesta di oplock, un file system acquisisce una risorsa esclusivamente, chiama FsRtlOplockFsctrlEx e rilascia la risorsa.

  • Quando si elabora un riconoscimento di interruzione oplock, il file system acquisisce la stessa risorsa condivisa, chiama FsRtlOplockFsctrlEx e rilascia la risorsa.

  • Quando si esegue L/O, il file system acquisisce la stessa risorsa condivisa, chiama FsRtlCheckOplockEx2, esegui l'I/O e rilascia la risorsa.

    I file system superiori devono assicurarsi che si sincronizzano tra le chiamate di FsRtlCheckUpperOplock e FsRtlUpperOplockFsctrl in modo analogo.