Partager via


FltAllocateExtraCreateParameterList, fonction (fltkernel.h)

Le FltAllocateExtraCreateParameterList routine alloue de la mémoire de pool paginée pour une structure de liste de paramètres de création supplémentaire (ECP) et génère un pointeur vers cette structure.

Syntaxe

NTSTATUS FLTAPI FltAllocateExtraCreateParameterList(
  [in]  PFLT_FILTER                  Filter,
  [in]  FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
  [out] PECP_LIST                    *EcpList
);

Paramètres

[in] Filter

Pointeur de filtre opaque pour le pilote minifilter. Ce pointeur identifie de façon unique le pilote minifilter et reste constant tant que le pilote minifilter est chargé.

[in] Flags

Définit les options d’allocation de pool. Si l’indicateur FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA est combiné avec les indicateurs de paramètre à l’aide d’une opération OR au niveau du bit, tout pool alloué par la routine est facturé par rapport au quota de mémoire du processus actuel.

[out] EcpList

Reçoit un pointeur vers une structure de liste ECP initialisée. Si la routine n’a pas pu allouer suffisamment de pool, *EcpList sera NULL et la routine retournera le code d’état STATUS_INSUFFICIENT_RESOURCES.

Valeur de retour

FltAllocateExtraCreateParameterList peut retourner l’une des valeurs suivantes :

Retourner le code Description
STATUS_INSUFFICIENT_RESOURCES FltAllocateExtraCreateParameterList n’a pas pu allouer suffisamment de mémoire pour une structure de liste ECP. Dans ce cas, *EcpList sera NULL.
STATUS_SUCCESS La structure de liste ECP a été correctement allouée et initialisée. Dans ce cas, un pointeur vers la structure de liste initialisée est retourné dans le paramètre *EcpList.

Remarques

Si le système d’exploitation libère automatiquement la mémoire que FltAllocateExtraCreateParameterList alloue dépend du moment où FltAllocateExtraCreateParameterList est appelée, comme indiqué dans les situations suivantes :

  • Un appelant peut appeler FltAllocateExtraCreateParameterList pour allouer le ECP_LIST et ajouter une ou plusieurs structures de contexte ECP avant que l’appelant appelle la routine FltCreateFileEx2. Dans ce cas, le système d’exploitation ne libère aucune des structures de contexte ECP. Par conséquent, l’appelant peut effectuer plusieurs appels à FltCreateFileEx2 avec le même jeu ECP. Lorsque l’appelant est terminé avec l’ECP_LIST, l’appelant doit appeler la routine FltFreeExtraCreateParameterList pour libérer le ECP_LIST.

  • Alors qu’un pilote de filtre de système de fichiers traite une demande de IRP_MJ_CREATE, le pilote de filtre du système de fichiers peut appeler FltInsertExtraCreateParameter pour attacher un ecP à un ECP_LIST existant. Si le ECP_LIST n’existe pas, l’appelant doit appeler FltAllocateExtraCreateParameterList pour créer le ECP_LIST. Dans ce cas, les ECP_LIST et la structure de contexte ECP sont automatiquement nettoyées par le gestionnaire d’E/S lorsque l’opération de création se termine. Cela permet à un pilote de filtre d’être correctement propagé sur le traitement des points d’analyse. Ce processus peut nécessiter la génération de plusieurs requêtes IRP_MJ_CREATE.

Si l’indicateur FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA est utilisé avec le paramètre Indicateurs, comme décrit ci-dessus, un pool paginable normal est alloué. Sinon, un pool paginable est alloué à l’aide d’une liste de lookaside interne.

structure de ECP_LIST

ECP_LIST est une structure opaque déclarée par le système d’exploitation. ECP_LIST contient une liste d’entrées de paramètre de création supplémentaire (ECP).

La routine FltAllocateExtraCreateParameterList doit être utilisée pour allouer de la mémoire pour la structure ECP_LIST. La mémoire allouée par FltAllocateExtraCreateParameterList n’est pas automatiquement libérée par le système d’exploitation ; elle doit être explicitement libérée en appelant la routine FltFreeExtraCreateParameterList. Notez que les éléments de liste ECP restants seront automatiquement libérés lorsque FltFreeExtraCreateParameterList est appelée.

Le type de données PECP_LIST est utilisé pour déclarer un pointeur vers une variable de type ECP_LIST.

Syntaxe

struct ECP_LIST {
  ;      // Reserved.
};

La structure ECP_LIST est déclarée dans Ntifs.h (incluez Ntifs.h).

Exigences

Exigence Valeur
client minimum pris en charge Cette routine est disponible à partir de Windows Vista.
plateforme cible Universel
d’en-tête fltkernel.h (include Fltkernel.h)
bibliothèque FltMgr.lib
IRQL <= APC_LEVEL

Voir aussi

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

ioCreateFileEx