Partager via


Fonction CcFastCopyRead (ntifs.h)

La routine CcFastCopyRead effectue une lecture de copie rapide à partir d’un fichier mis en cache vers 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écalage d’octet de démarrage dans le fichier mis en cache.

[in] Length

Longueur en octets des données à lire.

[in] PageCount

Nombre de pages étendues 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’achèvement final status et des informations sur l’opération. Si toutes les données ne sont pas copiées correctement, IoStatus.Information contient le nombre réel d’octets qui ont été copiés.

Valeur de retour

None

Remarques

CcFastCopyRead est une version plus rapide de CcCopyRead. Il diffère de CcCopyRead sur les points suivants :

  • FileOffset est un ULONG, et non 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 Length doit être inférieur ou égal à la taille du fichier mis en cache, sinon un échec d’assertion se produit.

En cas d’échec, CcFastCopyRead lève une exception status pour cet échec particulier. Par exemple, si un échec d’allocation de pool se produit, CcFastCopyRead lève une exception STATUS_INSUFFICIENT_RESOURCES ; si une erreur d’E/S se produit, CcFastCopyRead déclenche l’exception status de l’erreur 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 ou try-finally .

Pour mettre en cache un fichier, utilisez CcInitializeCacheMap.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ntifs.h (inclure Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Voir aussi

CcCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity