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 |