Partager via


Fonction FltAllocateExtraCreateParameterList (fltkernel.h)

La routine FltAllocateExtraCreateParameterList alloue de la mémoire du pool paginée pour une structure de liste de paramètres de création supplémentaires (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 de minifiltre. Ce pointeur identifie de manière unique le pilote de minifiltre et reste constant tant que le pilote de minifiltre est chargé.

[in] Flags

Définit les options d’allocation de pool. Si l’indicateur FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA est combiné au paramètre Flags à l’aide d’une opération OR au niveau du bit, tout pool alloué par la routine est facturé sur le 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 un pool suffisant, *EcpList aura la valeur NULL et la routine retournera status code STATUS_INSUFFICIENT_RESOURCES.

Valeur retournée

FltAllocateExtraCreateParameterList peut retourner l’une des valeurs suivantes :

Code de retour Description
STATUS_INSUFFICIENT_RESOURCES FltAllocateExtraCreateParameterList n’a pas pu allouer suffisamment de mémoire pour une structure de liste ECP. Dans ce cas, *EcpList aura la valeur 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

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

  • Un appelant peut appeler FltAllocateExtraCreateParameterList pour allouer les ECP_LIST et ajouter une ou plusieurs structures de contexte ECP avant que l’appelant n’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 ensemble ECP. Lorsque l’appelant a terminé avec le 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, le ECP_LIST et la structure de contexte ECP sont automatiquement nettoyés par le gestionnaire d’E/S une fois l’opération de création terminée. Cela permet à l’ECP d’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 demandes IRP_MJ_CREATE.

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

structure 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 à la structure ECP_LIST . La mémoire allouée par FltAllocateExtraCreateParameterList n’est pas automatiquement libérée par le système d’exploitation ; il doit être explicitement libéré en appelant la routine FltFreeExtraCreateParameterList . Notez que tous les éléments de liste ECP restants sont automatiquement libérés lorsque FltFreeExtraCreateParameterList est appelé.

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

Syntax

struct ECP_LIST {
  ;      // Reserved.
};

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Cette routine est disponible à partir de Windows Vista.
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
IRQL <= APC_LEVEL

Voir aussi

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx