CcCopyRead, fonction (ntifs.h)
La routine CcCopyRead copie les données d’un fichier mis en cache vers une mémoire tampon utilisateur.
Syntaxe
BOOLEAN CcCopyRead(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] BOOLEAN Wait,
[out] PVOID Buffer,
[out] PIO_STATUS_BLOCK IoStatus
);
Paramètres
[in] FileObject
Pointeur vers un objet file pour le fichier mis en cache à partir duquel les données doivent être lues.
[in] FileOffset
Pointeur vers une variable qui spécifie le décalage d’octets de départ dans le fichier mis en cache.
[in] Length
Longueur en octets des données à lire.
[in] Wait
Définissez sur TRUE si l’appelant peut être placé dans un état d’attente jusqu’à ce que toutes les données soient copiées ; FALSE dans le cas contraire.
[out] Buffer
Pointeur vers une mémoire tampon dans laquelle les données doivent être copiées.
[out] IoStatus
Pointeur vers une structure allouée par l’appelant 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 retournée
La routine CcCopyRead retourne TRUE si les données ont été copiées correctement, false dans le cas contraire.
Remarques
Si Wait a la valeur TRUE, CcCopyRead a la garantie de terminer la demande de copie et de retourner TRUE. 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 Wait a la valeur FALSE, CcCopyRead refuse de bloquer et retourne FALSE si les pages requises du fichier mis en cache ne résident pas déjà en mémoire.
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, CcCopyRead déclenche une exception status pour cet échec particulier. Par exemple, si un échec d’allocation de pool se produit, CcCopyRead déclenche une exception STATUS_INSUFFICIENT_RESOURCES ; si une erreur d’E/S se produit, CcCopyRead déclenche la status exception de l’erreur d’E/S. Par conséquent, pour contrôler si une défaillance se produit, le pilote doit encapsuler l’appel à CcCopyRead dans une instruction try-except ou try-finally .
Pour mettre en cache un fichier, utilisez CcInitializeCacheMap.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 |
Plateforme cible | Universal |
En-tête | ntifs.h (include Ntifs.h, FltKernel.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |