FLT_PARAMETERS pour l’union IRP_MJ_PREPARE_MDL_WRITE
Le membre de l’union FLT_PARAMETERS suivant est utilisé lorsque FLT_IO_PARAMETER_BLOCK.MajorFunction est IRP_MJ_PREPARE_MDL_WRITE.
Syntaxe
typedef union _FLT_PARAMETERS {
... ;
struct {
LARGE_INTEGER FileOffset;
ULONG POINTER_ALIGNMENT Length;
ULONG POINTER_ALIGNMENT Key;
PMDL *MdlChain;
} PrepareMdlWrite;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Membres
PrepareMdlWrite : Structure contenant les membres suivants.
FileOffset : Octet de départ dans le fichier mis en cache.
Length : Longueur, en octets, des données à écrire dans le fichier mis en cache.
Key : Valeur clé associée à un verrou de plage d’octets sur le fichier cible. Si la plage à écrire chevauche ou est une sous-plage d’une plage verrouillée exclusivement dans le fichier, ce paramètre doit être la clé de ce verrou exclusif. Le verrou exclusif doit être détenu par le processus parent du thread appelant ; sinon, ce paramètre est ignoré.
MdlChain : Pointeur vers une variable qui reçoit un pointeur vers une chaîne d’une ou plusieurs listes de descripteurs de mémoire (MDL) qui décrivent les pages contenant les données à écrire.
Notes
IRP_MJ_PREPARE_MDL_WRITE est une opération d’E/S rapide. Elle fait la même chose que IRP_MJ_WRITE + IRP_MN_MDL à l’exception de la différence suivante :
- L’opération basée sur IRP configure la mise en cache sur le fichier si celui-ci n’est pas déjà mis en cache avant de faire le travail MDL.
- L’opération Fast IO (opération d'E/S rapide ) échoue si le fichier n’est pas déjà mis en cache.
La structure FLT_PARAMETERS pour les opérations IRP_MJ_PREPARE_MDL_WRITE contient les paramètres pour une opération rapide d’E/S PrepareMdlWrite. L’opération est représentée par une structure de données de rappel (FLT_CALLBACK_DATA). Elle est contenue dans une structure FLT_IO_PARAMETER_BLOCK, avec les paramètres de l’opération dans la structure FLT_IO_PARAMETER_BLOCK à laquelle Iopb pointe.
Si une demande rapide d’E/S IRP_MJ_PREPARE_MDL_WRITE échoue, l’émetteur de l’E/S détermine comment réémettre la demande. Par exemple, la requête peut être rééditée en tant qu’opération basée sur IRP à l’aide de IRP_MJ_WRITE + IRP_MN_MDL.
Spécifications
Type de condition requise | Exigence |
---|---|
En-tête | Fltkernel.h (inclure Fltkernel.h) |