Partager via


FltAllocatePoolAlignedWithTag, fonction (fltkernel.h)

FltAllocatePoolAlignedWithTag alloue une mémoire tampon alignée sur l’appareil pour une utilisation dans une opération d’E/S non mise en cache.

Syntaxe

PVOID FLTAPI FltAllocatePoolAlignedWithTag(
  [in] PFLT_INSTANCE Instance,
  [in] POOL_TYPE     PoolType,
  [in] SIZE_T        NumberOfBytes,
  [in] ULONG         Tag
);

Paramètres

[in] Instance

Pointeur d’instance opaque pour une instance de pilote minifilter appartenant à l’appelant qui est attachée au volume. Ce paramètre est obligatoire et ne peut pas être NULL.

[in] PoolType

Type de pool à allouer. L’une des opérations suivantes :

NonPagedPool

pagedPool

nonPagedPoolCacheAligned

PagedPoolCacheAligned

Consultez POOL_TYPE pour obtenir une description des types de mémoire de pool disponibles.

[in] NumberOfBytes

Nombre d’octets à allouer. Ce paramètre est obligatoire et peut être égal à zéro.

[in] Tag

Spécifie la balise de pool pour la mémoire allouée. Les pilotes spécifient normalement la balise de pool sous forme de chaîne d’un à quatre caractères ASCII 7 bits, délimités par des guillemets simples (par exemple, « abcd »). Ce paramètre est obligatoire et ne peut pas être égal à zéro.

Valeur de retour

Si le pool gratuit n’est pas suffisant pour répondre à la demande, FltAllocatePoolAlignedWithTag retourne un pointeur NULL. Sinon, FltAllocatePoolAlignedWithTag retourne un pointeur vers la mémoire tampon nouvellement allouée.

Remarques

FltAllocatePoolAlignedWithTag alloue une mémoire tampon alignée conformément à l’appareil sous-jacent pour le volume donné. Ces mémoires tampons alignées sur l’appareil sont requises pour les E/S non mises en cache. (Ils peuvent également être utilisés pour les E/S mises en cache.) Ainsi, lors de l’appel de routines qui effectuent des E/S non mises en cache, telles que FltReadFile et fltWriteFile, les pilotes minifilter doivent appeler FltAllocatePoolAlignedWithTag au lieu d'ExAllocatePoolWithTag.

Si l’appelant spécifie la valeur zéro pour le paramètre NumberOfBytes, FltAllocatePoolAlignedWithTag alloue la plus petite quantité de mémoire qui répond à l’exigence d’alignement.

Le système associe la balise de pool spécifiée par le paramètre Tag à la mémoire tampon allouée. Les outils de programmation, tels que le débogueur Windows (WinDbg), peuvent afficher la balise de pool associée à chaque mémoire tampon allouée. La valeur de la balise de pool est normalement affichée dans l’ordre inverse. Par exemple, si un appelant passe « Fred » comme valeur du paramètre Balise, cette valeur apparaît sous la forme « derF » si le pool est vidé ou lors du suivi de l’utilisation du pool dans le débogueur.

Pour plus d’informations sur la gestion de la mémoire, consultez gestion de la mémoire.

Lorsque la mémoire tampon qui FltAllocatePoolAlignedWithTag alloue n’est plus nécessaire, l’appelant est chargé de le libérer en appelant FltFreePoolAlignedWithTag.

Les appelants de FltAllocatePoolAlignedWithTag peuvent s’exécuter à l’DISPATCH_LEVEL IRQL uniquement si unNonPaged XxxPoolType est spécifié. Dans le cas contraire, les appelants doivent s’exécuter à l'<IRQL = APC_LEVEL.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête fltkernel.h (include Fltkernel.h)
bibliothèque FltMgr.lib
IRQL <= APC_LEVEL (voir la section Remarques)

Voir aussi

ExAllocatePoolWithTag

FltFreePoolAlignedWithTag

FltReadFile

FltWriteFile