FLT_PARAMETERS pour l’union IRP_MJ_READ
Le composant union suivant est utilisé lorsque le champ MajorFunction de la structure FLT_IO_PARAMETER_BLOCK de l’opération est IRP_MJ_READ.
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
PVOID ReadBuffer;
PMDL MdlAddress;
} Read;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Lecture : Structure contenant les membres suivants.
Longueur : longueur, en octets, des données à lire.
Key : Valeur clé associée à un verrou de plage d’octets sur le fichier cible.
ByteOffset : début du décalage d’octet dans le fichier des données à lire.
ReadBuffer : pointeur vers une mémoire tampon qui reçoit les données lues à partir du fichier. Ce membre est facultatif et peut être NULL si un MDL est fourni dans MdlAddress. Consultez Remarques.
MdlAddress : Adresse d’une liste de descripteurs de mémoire (MDL) qui décrit la mémoire tampon vers laquelle pointe le membre ReadBuffer . Ce membre est facultatif et peut être NULL si une mémoire tampon est fournie dans ReadBuffer. Consultez Remarques.
La structure FLT_PARAMETERS pour les opérations de IRP_MJ_READ contient les paramètres d’une opération de lecture représentée par une structure de données de rappel (FLT_CALLBACK_DATA). Elle est contenue dans une structure FLT_IO_PARAMETER_BLOCK.
Si une mémoire tampon ReadBuffer et MdlAddress est fournie, il est recommandé que les mini-filtres utilisent le fichier MDL. Mémoire à laquelle ReadBuffer pointe est valide lorsqu’il s’agit d’une adresse en mode utilisateur accessible dans le contexte du processus appelant ou s’il s’agit d’une adresse en mode noyau.
Si un mini-filtre modifie la valeur de MdlAddress, après son rappel post-opération, Filter Manager libère le MDL actuellement stocké dans MdlAddress et restaure la valeur précédente de MdlAddress.
Si le bit IRP_MN_COMPLETE est défini dans Iopb-MinorFunction>, MdlAddress est l’adresse à envoyer à CcMdlReadComplete.
Si le bit IRP_MN_MDL (et non le bit IRP_MN_COMPLETE) est défini dans Iopb-MinorFunction>, MdlAddress est l’adresse à envoyer à CcMdlRead.
IRP_MJ_READ peut être une opération basée sur IRP ou une opération d’E/S rapide.
Type de condition requise | Exigence |
---|---|
En-tête | Fltkernel.h (inclure Fltkernel.h) |