Partager via


Fonction FsRtlMdlReadDev (ntifs.h)

La routine FsRtlMdlReadDev retourne une liste de descripteurs mémoire (MDL) qui pointe directement vers la plage d’octets spécifiée dans le cache de fichiers.

Syntaxe

BOOLEAN FsRtlMdlReadDev(
  [in]             PFILE_OBJECT     FileObject,
  [in]             PLARGE_INTEGER   FileOffset,
  [in]             ULONG            Length,
  [in]             ULONG            LockKey,
  [out]            PMDL             *MdlChain,
  [out]            PIO_STATUS_BLOCK IoStatus,
  [ in, optional ] PDEVICE_OBJECT   DeviceObject
);

Paramètres

[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’octet de début dans le fichier mis en cache contenant 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 déjà verrouillée avec un verrou non exclusif, ou si la plage à lire est une sous-plage d’une autre plage déjà verrouillée non exclusivement, la valeur de ce paramètre doit être la clé de ce verrou non exclusif Le verrou doit être conservé 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 listes de descripteurs de mémoire (MDL).

[out] IoStatus

Pointeur vers une structure de IO_STATUS_BLOCK qui, en sortie, contient les status 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 que la routine a correctement verrouillés.

[ in, optional ] DeviceObject

Pointeur vers un objet d’appareil sur lequel le fichier est ouvert.

Valeur retournée

La routine FsRtlMdlReadDev retourne TRUE si l’opération réussit et FALSE si l’opération échoue.

Remarques

La routine FsRtlMdlReadDev 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 FltFastIoMdlRead. FltFastIoMdlRead, CcMdlRead et FsRtlMdlReadDev verrouillent 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 dans la mémoire jusqu’à ce que l’appelant appelle la routine FsRtlMdlReadCompleteDev .

Configuration requise

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

Voir aussi

CcMdlRead

FsRtlMdlReadCompleteDev

FsRtlMdlReadEx