Compartir a través de


Sincronización de interbloqueo

Los filtros y sistemas de archivos que solicitan bloqueos oportunistas exclusivos (oplocks) deben sincronizar las llamadas en el paquete oplock proporcionado por el sistema. En concreto, las llamadas a rutinas fscTRL de oplock (para establecer interbloqueos), deben sincronizarse con las llamadas a rutinas de interrupción de comprobación de bloqueo de oplock. Una lista de ambos conjuntos de rutinas incluye:

Al procesar una solicitud de interbloqueo, los filtros y los sistemas de archivos deben asegurarse de lo siguiente:

  • La E/S que podría interrumpir un interbloqueo no se puede producir en paralelo con el procesamiento de la solicitud.
  • Las solicitudes de interbloqueo no se pueden producir simultáneamente con confirmaciones de interrupción de interbloqueo.

Las llamadas IRP que solicitan la creación de interbloqueos exclusivos para el mismo bloque de control de archivos (FCB) son:

A continuación se muestran algunos ejemplos de sincronización de interbloqueo:

  • Al procesar una solicitud de interbloqueo, un sistema de archivos adquiriría algún recurso exclusivamente, llamaría a FsRtlOplockFsctrlEx y liberaría el recurso.

  • Al procesar una confirmación de interrupción de interbloqueo, el sistema de archivos adquiriría ese mismo recurso compartido, llamaría a FsRtlOplockFsctrlEx y liberaría el recurso.

  • Al realizar E/S, el sistema de archivos adquiriría ese mismo recurso compartido, llamaría a FsRtlCheckOplockEx2, realizaría la E/S y liberaría el recurso.

    Los sistemas de archivos superiores deben asegurarse de que se sincronicen entre las llamadas de FsRtlCheckUpperOplock y FsRtlUpperOplockFsctrl de forma similar.