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