Fonction CcSetFileSizesEx (ntifs.h)
La routine CcSetFileSizesEx met à jour les mappages de cache et l’objet de section pour un fichier mis en cache dont la taille a changé.
Syntaxe
NTSTATUS CcSetFileSizesEx(
PFILE_OBJECT FileObject,
PCC_FILE_SIZES FileSizes
);
Paramètres
FileObject
[in] Pointeur vers un objet de fichier pour le fichier mis en cache.
FileSizes
[in] Pointeur vers une structure de CC_FILE_SIZES contenant les nouvelles informations de taille de fichier.
Valeur retournée
CcSetFileSizesEx retourne STATUS_SUCCESS si la taille du fichier a été correctement modifiée et, si une purge a été nécessaire, que la purge a réussi. Sinon, il retourne un code NSTATUS non réussi, tel que STATUS_INSUFFICIENT_RESOURCES, et peut déclencher une exception status.
En ce qui concerne le déclenchement d’une exception status en cas d’erreur :
Si l’opération provoque ccSetFileSizesEx à vider et/ou vider le fichier, CcSetFileSizesEx ne déclenche pas d’erreurs ; il retourne simplement le code NTSTATUS non réussi approprié de l’opération de vidage ou de purge.
Si l’opération entraîne l’extension de la section par CcSetFileSizesEx , ccSetFileSizesEx déclenche toute erreur rencontrée pendant cette extension.
Remarques
Les systèmes de fichiers doivent appeler CcSetFileSizesEx pour mettre à jour les structures de données du gestionnaire de cache chaque fois que l’une des modifications suivantes est apportée à un fichier mis en cache :
Sa taille d’allocation est augmentée.
Sa longueur de données valide est réduite.
Sa longueur de données valide est augmentée par une opération d’E/S non mise en cache.
Sa taille de fichier est augmentée ou réduite.
Si l’opération amène CcSetFileSizesEx à étendre la section et qu’un échec se produit, CcSetFileSizesEx déclenche une exception status pour cet échec particulier. Par exemple, si un échec d’allocation de pool se produit, CcSetFileSizesEx lève une exception STATUS_INSUFFICIENT_RESOURCES. Par conséquent, pour contrôler si une défaillance se produit, le pilote doit encapsuler l’appel à CcSetFileSizesEx dans une instruction try-except ou try-finally .
Le système de fichiers doit s’assurer que le mappage du cache est valide et le restera pendant toute la durée de cet appel.
Pour mettre en cache un fichier, utilisez CcInitializeCacheMap.
Pour obtenir la taille du fichier mis en cache, passez FileObject à CcGetFileSizePointer.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | ntifs.h |