Partager via


Fonction CcFastCopyRead (ntifs.h)

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

Syntaxe

void CcFastCopyRead(
  [in]  PFILE_OBJECT     FileObject,
  [in]  ULONG            FileOffset,
  [in]  ULONG            Length,
  [in]  ULONG            PageCount,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus
);

Paramètres

[in] FileObject

Pointeur vers un objet de fichier pour le fichier mis en cache à partir duquel les données doivent être lues.

[in] FileOffset

Début du décalage d’octet dans le fichier mis en cache.

[in] Length

Longueur en octets des données à lire.

[in] PageCount

Nombre de pages couvertes par la lecture.

[out] Buffer

Pointeur vers une mémoire tampon dans laquelle les données doivent être copiées.

[out] IoStatus

Pointeur vers une structure qui reçoit l’état d’achèvement final et les informations relatives à l’opération. Si toutes les données ne sont pas copiées correctement, IoStatus.Information contient le nombre réel d’octets copiés.

Valeur de retour

Aucun

Remarques

ccFastCopyRead est une version plus rapide de CcCopyRead. Il diffère de CcCopyRead dans les respects 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.

  • CcFastCopyRead ne retourne pas de type BOOLEAN pour indiquer si l’opération de lecture a réussi.

FileOffset plus longueur doit être inférieure ou égale à la taille du fichier mis en cache, ou une défaillance d’assertion se produit.

Si une défaillance se produit, CcFastCopyRead déclenche une exception d’état pour cet échec particulier. Par exemple, si un échec d’allocation de pool se produit, CcFastCopyRead déclenche une exception de STATUS_INSUFFICIENT_RESOURCES ; si une erreur d’E/S se produit, CcFastCopyRead 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 à CcFastCopyRead 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
IRQL < DISPATCH_LEVEL

Voir aussi

CcCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity