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 |