Partager via


FltGetSwappedBufferMdlAddress, fonction (fltkernel.h)

La routine FltGetSwappedBufferMdlAddress retourne l’adresse MDL (memory descriptor list) pour une mémoire tampon qui a été permutée par un pilote minifilter.

Syntaxe

PMDL FltGetSwappedBufferMdlAddress(
  [in] PFLT_CALLBACK_DATA CallbackData
);

Paramètres

[in] CallbackData

Pointeur vers la structure de données de rappel pour l’opération.

Valeur de retour

FltGetSwappedBufferMdlAddress retourne l’adresse MDL de la mémoire tampon qui a été permutée par l’appelant. FltGetSwappedBufferMdlAddress retourne NULL dans les cas suivants :

  • L’opération est une opération d’E/S rapide. Dans une opération d’E/S rapide, la mémoire tampon ne peut pas avoir de MDL.
  • La mémoire tampon qui a été permutée par l’appelant n’a pas de MDL.
  • Le pilote minifilter n’a pas échangé de mémoires tampons dans la routine de rappel de préopération.

Remarques

Un pilote minifilter qui échange dans une nouvelle mémoire tampon dans une routine de rappel de préopération peut obtenir l’adresse MDL de la mémoire tampon en appelant FltGetSwappedBufferMdlAddress à partir de la routine de rappel postopératoire correspondante.

La routine FltGetSwappedBufferMdlAddress est nécessaire, car la routine de rappel postopératoire reçoit une structure de données de rappel qui contient la mémoire tampon d’origine et l’adresse MDL, et non celles qui ont été permutées par la routine de rappel de préopération de l’appelant.

Il est possible que FltGetSwappedBufferMdlAddress retourner une valeur MDL nonNULL, même si l’appelant n’a pas créé de MDL pour la mémoire tampon qu’il a échangé. Cela se produit lorsqu’un MDL est créé pour la mémoire tampon par un pilote minifilter, un pilote de filtre hérité ou un pilote de système de fichiers qui se trouve sous l’appelant dans la pile des pilotes du système de fichiers ou du pilote du système de fichiers.

Il est également possible pour FltGetSwappedBufferMdlAddress de renvoyer une valeur NULL nonNULL MDL même si l’appelant n’a pas échangé dans une nouvelle mémoire tampon dans sa routine de rappel de préopération. Cela se produit dans les opérations, telles que la pagination des E/S, où la mémoire tampon est NULL et que l’appelant échange dans une nouvelle adresse MDL.

Le MDL de la mémoire tampon qui a été permutée par l’appelant est automatiquement libéré par le Gestionnaire de filtres lorsque la routine de rappel de postopération est retournée. Pour empêcher la libération de ce MDL, appelez FltRetainSwappedBufferMdlAddress.

FltGetSwappedBufferMdlAddress ne peut être appelé qu’à partir d’une routine de rappel postopératoire.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête fltkernel.h (include Fltkernel.h)
bibliothèque FltMgr.lib
DLL Fltmgr.sys
IRQL N’importe quel niveau

Voir aussi

FltDecodeParameters

FltRetainSwappedBufferMdlAddress