FltFastIoMdlRead, fonction (fltkernel.h)
La routine FltFastIoMdlRead retourne une liste de descripteurs de mémoire (MDL) qui pointe directement vers la plage d’octets spécifiée dans le cache de fichiers.
Syntaxe
BOOLEAN FLTAPI FltFastIoMdlRead(
PFLT_INSTANCE InitiatingInstance,
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG LockKey,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus
);
Paramètres
InitiatingInstance
Pointeur d’instance opaque pour l’appelant. Ce paramètre est obligatoire et ne peut pas être NULL.
[in] FileObject
Pointeur vers un objet de fichier pour le fichier mis en cache.
[in] FileOffset
Pointeur vers une variable qui spécifie le décalage d’octets de départ dans le fichier mis en cache qui contient les données.
[in] Length
Longueur en octets des données à lire à partir du cache.
[in] LockKey
Valeur associée à la plage d’octets à verrouiller. Si la plage à verrouiller chevauche une autre plage qui est déjà verrouillée avec un verrou non cluster ou si la plage à lire est une sous-plage d’une autre plage qui est déjà verrouillée non exclusivement, la valeur de ce paramètre doit être la clé de ce verrou non cluster. Le verrou doit être détenu par le processus parent du thread appelant. Sinon, ce paramètre n’a aucun effet.
[out] MdlChain
En sortie, un pointeur vers une liste liée de descripteurs de mémoire (MDLs).
[out] IoStatus
Pointeur vers une structure IO_STATUS_BLOCK qui, en sortie, contient l’état du transfert. Si l’opération réussit, IoStatus.Status est défini sur STATUS_SUCCESS. Sinon, il est défini sur un code d’erreur NTSTATUS approprié. IoStatus.Information est défini sur le nombre réel d’octets verrouillés par la routine.
Valeur de retour
La routine FltFastIoMdlRead retourne TRUE si l’opération réussit et FALSE en cas d’échec de l’opération.
Remarques
La routine FltFastIoMdlRead contourne le mécanisme IRP habituel et retourne une liste liée de listes de descripteurs de mémoire (MDL) que l’appelant peut utiliser pour accéder directement aux données du fichier mis en cache. Cette opération ne copie pas ou ne met pas en mémoire tampon les données et est donc beaucoup plus rapide qu’une lecture normale.
La routine est similaire à CcMdlRead et FsRtlMdlReadDev. FltFastIoMdlRead, CcMdlReadet FsRtlMdlReadDev verrouiller les pages qui contiennent les données du fichier mis en cache pour empêcher le système d’échanger ces pages vers le fichier de page. Les pages restent verrouillées en mémoire jusqu’à ce que l’appelant appelle la routine FltFastIoMdlReadComplete.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | fltkernel.h (include Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |