Partager via


CcMdlWriteComplete, fonction (ntifs.h)

La routine CcMdlWriteCom plete 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 de fichier passé à CcPrepareMdlWrite.

[in] FileOffset

Valeur de FileOffset passée à CcPrepareMdlWrite.

[in] MdlChain

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

Valeur de retour

Aucun

Remarques

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

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

Une fois CcMdlWriteComplete est appelée correctement 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.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Voir aussi

CcMdlWriteAbort

CcPrepareMdlWrite