FLT_PARAMETERS pour l’union IRP_MJ_WRITE
Le composant union suivant est utilisé lorsque le champ MajorFunction de la structure FLT_IO_PARAMETER_BLOCK de l’opération est IRP_MJ_WRITE.
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
ULONG Key;
LARGE_INTEGER ByteOffset;
PVOID WriteBuffer;
PMDL MdlAddress;
} Write;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Écriture : structure contenant les membres suivants.
Longueur : longueur, en octets, des données à écrire.
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 à écrire.
WriteBuffer : pointeur vers une mémoire tampon qui contient les données à écrire dans le 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 le membre WriteBuffer pointe. Ce membre est facultatif et peut être NULL si une mémoire tampon est fournie dans WriteBuffer. Consultez Remarques.
La structure FLT_PARAMETERS pour les opérations de IRP_MJ_WRITE contient les paramètres d’une opération d’écriture 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 WriteBuffer et MdlAddress est fournie, il est recommandé que les mini-filtres utilisent mdL. La mémoire à laquelle WriteBuffer 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 à CcPrepareMdlWrite.
IRP_MJ_WRITE 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) |