Fonction CcZeroData (ntifs.h)

La routine CcZeroData met à zéro la plage d’octets spécifiée dans un fichier mis en cache ou non mis en cache.

Notes

Cette routine ne doit être appelée qu’à zéro partie d’un fichier au-delà de la longueur de données valide du fichier. CcZeroData ne modifie pas les données écrites précédemment du fichier. Pour zéro les données précédemment écrites qui constituent une partie du fichier jusqu’à la longueur de données valide du fichier, appelez CcCopyWrite ou l’une des autres interfaces d’écriture mises en cache.

Syntaxe

BOOLEAN CcZeroData(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER StartOffset,
  [in] PLARGE_INTEGER EndOffset,
  [in] BOOLEAN        Wait
);

Paramètres

[in] FileObject

Pointeur vers un FILE_OBJECT pour le fichier dans lequel une plage d’octets doit être mise à zéro.

[in] StartOffset

Pointeur vers une variable qui spécifie le décalage d’octets dans le fichier sur le premier octet à mettre à zéro.

[in] EndOffset

Pointeur vers une variable qui spécifie le décalage d’octets dans le fichier vers le dernier octet à mettre à zéro.

[in] Wait

Défini sur TRUE si l’appelant doit être mis en état d’attente jusqu’à ce que la plage d’octets entière ait été mise à zéro. Sinon, ce paramètre est défini sur FALSE.

Valeur retournée

CcZeroData retourne TRUE si les données sont correctement mise à zéro ; sinon, retourne FALSE.

Remarques

Le fichier à mettre à zéro peut être mis en cache ou non mis en cache. Toutefois, si le fichier n’est pas mis en cache, les valeurs de StartOffset et EndOffset doivent être des multiples de la taille de secteur du volume.

Si un échec d’allocation de pool se produit et que Wait a été spécifié sur TRUE, CcZeroData lève une exception STATUS_INSUFFICIENT_RESOURCES. Si un échec d’allocation de pool se produit et que Wait a été spécifié comme FALSE, CcZeroData retourne FALSE, mais ne déclenche pas d’exception.

Si la mise en cache de l’objet FileObject fourni n’est pas activée, mais qu’elle existe sur le flux (autrement dit, la mise en cache d’un autre objet fichier pour le même fichier est activée), la mise à zéro est traitée comme si la mise en cache en écriture directe était activée.

Si Wait est défini sur TRUE, CcZeroData a la garantie de terminer la demande de données zéro et de retourner TRUE. Si les pages requises du fichier mis en cache résident déjà en mémoire, les données sont immédiatement supprimées et aucun blocage ne se produit. Si les pages nécessaires ne sont pas résidentes, l’appelant est placé dans un état d’attente jusqu’à ce que toutes les pages requises aient été rendues résidentes et que les données puissent être mises à zéro.

Si Wait a la valeur FALSE et si les pages requises du fichier mis en cache ne résident pas déjà en mémoire, CcZeroData refuse de bloquer et retourne FALSE.

Si un échec d’allocation de pool se produit, CcZeroData lève une exception STATUS_INSUFFICIENT_RESOURCES. Si CcZeroData rencontre d’autres erreurs, notamment des erreurs d’E/S, les erreurs sont signalées à l’appelant.

Pour les systèmes d’exploitation Windows Vista et ultérieurs, le comportement de CcZeroData est le suivant :

  • Si le flux est mis en cache et write_through, StartOffset n’a pas besoin d’être aligné sur le secteur.
  • Si EndOffset n’est pas aligné, il est arrondi à la taille de secteur suivante.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000. Consultez Remarques pour les modifications apportées à Vista et aux systèmes d’exploitation ultérieurs.
Plateforme cible Universal
En-tête ntifs.h (include Fltkernel.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL

Voir aussi

CcInitializeCacheMap

CcIsFileCached

FILE_OBJECT