Partager via


Vérification de l’état Oplock d’une opération de IRP_MJ_SET_INFORMATION

Les opérations de IRP_MJ_SET_INFORMATION suivantes case activée état oplock :

  • FileEndOfFileInformation
  • FileAllocationInformation
  • FileValidDataLengthInformation
  • FileRenameInformation
  • FileShortNameInformation
  • FileLinkInformation
  • FileDispositionInformation

Vérification de l’état oplock pour les opérations FileEndOfFileInformation, FileAllocationInformation et FileValidDataLengthInformation

Ces informations s’appliquent lorsque les opérations suivantes sont effectuées sur un fichier ou un flux :

  • Un appelant tente de modifier la taille logique du flux. Notez que lorsque le thread d’écriture paresseux du gestionnaire de cache tente de définir une nouvelle fin de fichier, aucune case activée oplock n’est effectuée. Cela est dû au fait que la case activée est effectuée précédemment lorsque la demande d’écriture réelle est reçue.

  • Un appelant tente de modifier la taille allouée du flux.

Conditions pour un type de requête de niveau 2

  • Toujours arrêter sur Aucun.

  • Aucun accusé de réception n’est requis ; l’opération se poursuit immédiatement.

Conditions pour tous les autres types de requêtes

  • Arrêt sur IRP_MJ_SET_INFORMATION (pour FileEndOfFileInformation, FileAllocationInformation et FileValidDataLengthInformation) lorsque l’opération se produit sur un FILE_OBJECT avec une clé oplock qui diffère de la clé du FILE_OBJECT propriétaire de l’oplock. Si l’oplock est rompu, passez à Aucun.

  • Les exigences relatives à l’accusé de réception varient comme suit :

    • Demande de lecture : aucun accusé de réception n’est requis ; l’opération se poursuit immédiatement.

    • Read-Handle demande : bien que l’accusé de réception de l’arrêt soit requis, l’opération se poursuit immédiatement (c’est-à-dire sans attendre l’accusé de réception).

    • Niveau 1, Batch, Filter, Read-Write et Read-Write-Handle demandes : un accusé de réception doit être reçu avant que l’opération ne se poursuive.

Vérification de l’état oplock pour les opérations FileRenameInformation, FileShortNameInformation et FileLinkInformation

Ces informations s’appliquent lorsque les opérations suivantes sont effectuées sur un fichier ou un flux :

  • Le fichier ou le flux est renommé.

  • Un nom court est en cours de définition pour le fichier.

  • Un lien dur est en cours de création pour le fichier. Cela affecte l’état oplock si le nouveau lien physique remplace un lien existant vers un autre fichier et si l’oplock existe sur le lien en cours de remplacement.

  • Un répertoire ancêtre du flux sur lequel l’oplock existe est en cours de renommage, ou le nom court du répertoire ancêtre est en cours de définition.

Conditions pour les opérations de niveau 1, de niveau 2, de lecture et de Read-Write

  • L’oplock n’est pas cassé.

  • Aucun accusé de réception n’est requis et l’opération se poursuit immédiatement.

Conditions pour les opérations Batch, Filter, Read-Handle et Read-Write-Handle

  • Arrêt sur IRP_MJ_SET_INFORMATION (pour FileRenameInformation, FileShortNameInformation et FileLinkInformation) lorsque l’opération se produit sur un FILE_OBJECT avec une clé oplock qui diffère de la clé du FILE_OBJECT propriétaire de l’oplock. Si l’oplock est rompu :

    • Les demandes de traitement par lots et de filtre s’arrêtent sur Aucun.

    • Read-Handle demandes s’interrompent en lecture.

    • Les requêtes Read-Write-Handle s’arrêtent en lecture-écriture.

  • Un accusé de réception doit être reçu avant que l’opération ne se poursuive.

Vérification de l’état oplock pour les opérations FileDispositionInformation

Ces informations s’appliquent lorsqu’un appelant tente de supprimer le fichier.

  • Arrêt sur IRP_MJ_SET_INFORMATION (pour FileDispositionInformation) lorsque l’opération se produit sur un FILE_OBJECT avec une clé oplock qui diffère de la clé de l’FILE_OBJECT propriétaire de l’oplock, ET quand FILE_DISPOSITION_INFORMATION. DeleteFile a la valeur TRUE**. Si l’oplock est rompu :

    • Read-Handle demandes s’interrompent en lecture.

    • Les requêtes Read-Write-Handle s’arrêtent en lecture-écriture.

  • Un accusé de réception doit être reçu avant que l’opération ne se poursuive.