Partager via


Fonction FltAllocatePoolAlignedWithTag (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 de instance opaque pour un pilote minifiltre appartenant à l’appelant instance attaché au volume. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL.

[in] PoolType

Type de pool à allouer. Celui-ci peut avoir l'une des valeurs 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 la forme d’une chaîne d’un à quatre caractères ASCII 7 bits, délimités par des guillemets uniques (par exemple, « abcd »). Ce paramètre est obligatoire et ne peut pas être égal à zéro.

Valeur retournée

Si le pool libre 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 en fonction de 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 de minifiltre doivent appeler FltAllocatePoolAlignedWithTag au lieu d’ExAllocatePoolWithTag.

Si l’appelant spécifie une 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 Tag , cette valeur s’affiche 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 allouée par FltAllocatePoolAlignedWithTag n’est plus nécessaire, l’appelant est chargé de la libérer en appelant FltFreePoolAlignedWithTag.

Les appelants de FltAllocatePoolAlignedWithTag peuvent être en cours d’exécution sur IRQL DISPATCH_LEVEL uniquement si unXxxPoolType non paginé est spécifié. Sinon, les appelants doivent être en cours d’exécution à IRQL <= APC_LEVEL.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
IRQL <= APC_LEVEL (voir la section Remarques)

Voir aussi

ExAllocatePoolWithTag

FltFreePoolAlignedWithTag

FltReadFile

FltWriteFile