Partager via


Fonction CcMdlWriteComplete (ntifs.h)

La routine CcMdlWriteComplete libère les listes de descripteurs de mémoire (MDL) créées par CcPrepareMdlWrite pour un fichier mis en cache.

Syntaxe

void CcMdlWriteComplete(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER FileOffset,
  [in] PMDL           MdlChain
);

Paramètres

[in] FileObject

Pointeur d’objet file passé à CcPrepareMdlWrite.

[in] FileOffset

Valeur de FileOffset qui a été passée à CcPrepareMdlWrite.

[in] MdlChain

Adresse de la chaîne MDL retournée par CcPrepareMdlWrite.

Valeur de retour

None

Remarques

Les systèmes de fichiers appellent CcMdlWriteComplete pour libérer les listes de descripteurs mémoire (MDL) créées par CcPrepareMdlWrite pour un fichier mis en cache et pour marquer la plage d’octets spécifiée pour l’écriture. Toutes les pages physiques verrouillées sont déverrouillées. Toutes les pages qui ont été mappées sont non mappées.

Si l’indicateur FO_WRITE_THROUGH est défini sur l’objet file pointé vers par le paramètre FileObject , les données du fichier sont immédiatement vidées sur le disque. Cette opération de vidage entre à nouveau dans le système de fichiers et peut entraîner le déclenchement d’une exception par CcMdlWriteComplete si l’opération de vidage échoue. Dans ce cas, la MDL n’a pas été libérée et l’appelant peut réessayer l’opération.

Une fois Que CcMdlWriteComplete a été appelé avec succès pour une opération de IRP_MN_COMPLETE, l’appelant doit définir le champ MdlAddress de l’IRP sur NULL.

Avant d’utiliser CcMdlWriteComplete, les développeurs de systèmes de fichiers sont fortement encouragés à étudier la façon dont cette routine est utilisée dans l’exemple FASTFAT.

Chaque appel à CcPrepareMdlWrite doit être suivi d’un appel à CcMdlWriteComplete ou CcMdlWriteAbort.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ntifs.h (include Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Voir aussi

CcMdlWriteAbort

CcPrepareMdlWrite