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 |