Partager via


CcSetFileSizesEx, fonction (ntifs.h)

Le CcSetFileSizesEx routine 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 CC_FILE_SIZES contenant les nouvelles informations de taille de fichier.

Valeur de retour

CcSetFileSizesEx retourne STATUS_SUCCESS si la taille du fichier a été correctement modifiée et, si une purge a été nécessaire pour que le vidage ait réussi. Sinon, il retourne un code NSTATUS non réussi, tel que STATUS_INSUFFICIENT_RESOURCES, et peut déclencher une exception d’état.

En ce qui concerne le déclenchement d’une exception d’état lors de l’erreur :

  • Si l’opération provoque CcSetFileSizesEx vider et/ou vider le fichier, CcSetFileSizesEx ne déclenche pas d’erreurs ; elle retourne simplement le code NTSTATUS non réussi approprié de l’opération de vidage ou de vidage.

  • Si l’opération provoque CcSetFileSizesEx d’étendre la section, CcSetFileSizesEx déclenche une erreur lors de 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 provoque CcSetFileSizesEx d’étendre la section et qu’une défaillance se produit, CcSetFileSizesEx déclenche une exception d’état pour cet échec particulier. Par exemple, si un échec d’allocation de pool se produit, CcSetFileSizesEx déclenche une exception STATUS_INSUFFICIENT_RESOURCES. Par conséquent, pour obtenir le contrôle en cas d’échec, 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 de cache est valide et restera ainsi pendant 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.

Exigences

Exigence Valeur
d’en-tête ntifs.h

Voir aussi

CcInitializeCacheMap

CcSetCacheFileSizes