Partager via


CcFastCopyWrite, fonction (ntifs.h)

La routine CcFastCopyWrite effectue une copie rapide à partir d’une mémoire tampon en mémoire dans un fichier mis en cache.

Syntaxe

void CcFastCopyWrite(
  [in] PFILE_OBJECT FileObject,
  [in] ULONG        FileOffset,
  [in] ULONG        Length,
  [in] PVOID        Buffer
);

Paramètres

[in] FileObject

Pointeur vers un objet de fichier pour le fichier mis en cache vers lequel les données doivent être écrites.

[in] FileOffset

Pointeur vers une variable qui spécifie le décalage d’octet de départ dans le fichier mis en cache.

[in] Length

Longueur en octets des données à écrire.

[in] Buffer

Pointeur vers la mémoire tampon à partir de laquelle les données doivent être copiées.

Valeur de retour

Aucun

Remarques

CcFastCopyWrite est une version plus rapide de CcCopyWrite. Il diffère de ccCopyWrite à l’égard des éléments suivants :

  • FileOffset est un ULONG, pas un PLARGE_INTEGER.

  • Il n’existe aucun paramètre Wait. L’appelant doit être en mesure d’entrer un état d’attente jusqu’à ce que toutes les données soient copiées.

  • CcFastCopyWrite ne retourne pas de type BOOLEAN pour indiquer si l’opération d’écriture a réussi.

Si les pages requises du fichier mis en cache résident déjà en mémoire, les données sont copiées immédiatement 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 copiées.

Si une défaillance se produit, CcFastCopyWrite déclenche une exception d’état pour cet échec particulier. Par exemple, si un échec d’allocation de pool se produit, CcFastCopyWrite déclenche une exception de STATUS_INSUFFICIENT_RESOURCES ; si une erreur d’E/S se produit, CcFastCopyWrite déclenche l’exception d’état de l’erreur d’E/S. Par conséquent, pour contrôler si une défaillance se produit, le pilote doit encapsuler l’appel à CcFastCopyWrite dans une instruction try-except try-except ou try-finally.

Pour mettre en cache un fichier, utilisez CcInitializeCacheMap.

Exigences

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

Voir aussi

CcCopyWrite

CcInitializeCacheMap