Concepts txF de base
Isolation de lecture
Transactional NTFS (TxF) fournit une cohérence de lecture validée.
Un writer traité fait référence à un handle de fichier traité ouvert avec n’importe quelle autorisation qui ne fait pas partie de l’accès en lecture générique, mais qui fait partie de l’accès en écriture générique. Un writer traité affiche la version la plus récente d’un fichier qui inclut toutes les modifications apportées par la même transaction. Il ne peut y avoir qu’un seul writer traité par fichier. Les enregistreurs non traités sont toujours bloqués par un writer traité, même si le fichier est ouvert avec des autorisations d’écriture partagée.
Un lecteur traité fait référence à un handle de fichier traité ouvert avec n’importe quelle autorisation qui fait partie de l’accès en lecture générique, mais qui ne fait pas partie de l’accès en écriture générique. Un lecteur traité affiche une version validée du fichier qui existait au moment de l’ouverture du handle de fichier. Le lecteur traité est isolé des effets des enregistreurs traités. Cela fournit une vue cohérente du fichier uniquement pendant la durée de vie du handle de fichier et bloque les rédacteurs non traités.
Notes
Lorsqu’un handle a été ouvert pour modification avec la fonction CreateFileTransacted , toutes les ouvertures ultérieures du fichier au sein de cette transaction, que ce soit en lecture seule ou non, sont converties par le système pour être un enregistreur traité à des fins d’isolation et d’autres sémantiques transactionnelles. Cela signifie que, par la suite, lorsqu’un handle est ouvert pour l’accès en lecture seule, le handle ne reçoit pas de vue du fichier avant le début de la transaction ; elle reçoit la vue de transaction active du fichier.
Un handle de fichier non traité ne voit aucune modification apportée dans une transaction tant que la transaction n’est pas validée. Le handle de fichier non traité reçoit une vue isolée similaire à un lecteur traité, mais contrairement à un lecteur traité, il reçoit la mise à jour du fichier lorsqu’un enregistreur transactionné valide la transaction.
Niveaux d’isolation
TxF fournit une isolation en lecture validée. Cela signifie que les mises à jour de fichiers ne sont pas visibles en dehors de la transaction. En outre, si un fichier est ouvert plusieurs fois lors de la lecture de fichiers dans la transaction, vous pouvez voir des résultats différents à chaque ouverture suivante. Les fichiers qui étaient disponibles la première fois que vous y avez accédé peuvent ne pas être disponibles (car ils ont été supprimés), ou vice versa.
Verrouillage transactionnel
La création d’un writer traité sur un fichier verrouille le fichier de manière transactionnelle . Une fois qu’un fichier est verrouillé par une transaction, les autres opérations de système de fichiers externes à la transaction de verrouillage qui tentent de modifier le fichier verrouillé par transaction échouent avec ERROR_SHARING_VIOLATION ou ERROR_TRANSACTIONAL_CONFLICT.
Le tableau suivant récapitule le verrouillage transactionnel.
Fichier actuellement ouvert par
Tentative d’ouverture de fichier par
Transacted
Non traité
Lecteur
Lecteur/Enregistreur
Lecteur
Lecteur/Enregistreur
Lecteur traité
Oui
Oui
Oui
Non 2
Lecteur/enregistreur traité
Oui
Non 2
Oui
Non 2
Lecteur non traité
Oui
Oui
Oui
Oui
Lecteur/enregistreur non traité
Non1
Non1
Oui
Oui
- Échec avec ERROR_TRANSACTIONAL_CONFLICT
2. Échoue avec ERROR_SHARING_VIOLATION
Si vous ouvrez un flux nommé pour une modification qui utilise une transaction, l’intégralité du fichier doit être verrouillée.
En plus du verrouillage transactionnel, des règles de partage de fichiers NTFS classiques s’appliquent.
Vous devez prendre en compte les deux modes de partage de fichiers suivants en parallèle :
- Mode de verrouillage transactionnel.
- Modes de partage de fichiers normaux.
Le mode le plus restrictif est celui qui s’applique.