Synchronisation oplock

Les filtres et les systèmes de fichiers qui demandent des verrous opportunistes exclusifs (oplocks) doivent synchroniser les appels dans le package oplock fourni par le système. En particulier, les appels aux routines FSCTRL oplock (pour établir des oplocks) doivent être synchronisés avec les appels aux routines oplock case activée-break. Voici une liste des deux ensembles de routines :

Lors du traitement d’une demande oplock, les filtres et les systèmes de fichiers doivent garantir les éléments suivants :

  • Les E/S susceptibles de rompre un blocage d’opération ne peuvent pas se produire en parallèle avec le traitement de la demande.
  • Les demandes de blocage d’opération ne peuvent pas se produire simultanément avec les accusés de réception d’arrêt d’oplock.

Les appels IRP qui demandent la création d’oplocks exclusifs pour le même bloc de contrôle de fichier (FCB) sont les suivants :

Voici quelques exemples de synchronisation oplock :

  • Lors du traitement d’une demande oplock, un système de fichiers acquiert une ressource exclusivement, appelle FsRtlOplockFsctrlEx et libère la ressource.

  • Lors du traitement d’un accusé de réception d’arrêt d’opération, le système de fichiers acquiert cette même ressource partagée, appelle FsRtlOplockFsctrlEx et libère la ressource.

  • Lors de l’exécution d’E/S, le système de fichiers acquiert cette même ressource partagée, appelle FsRtlCheckOplockEx2, effectue les E/S et libère la ressource.

    Les systèmes de fichiers supérieurs doivent s’assurer qu’ils se synchronisent entre les appels de FsRtlCheckUpperOplock et FsRtlUpperOplockFsctrl de la même manière.