Partager via


Fonction FltAllocateExtraCreateParameterFromLookasideList (fltkernel.h)

La routine FltAllocateExtraCreateParameterFromLookasideList alloue un pool de mémoire à partir d’une liste de choix donnée pour une structure de contexte de paramètre de création supplémentaire (ECP) et génère un pointeur vers cette structure.

Syntaxe

NTSTATUS FLTAPI FltAllocateExtraCreateParameterFromLookasideList(
  [in]           PFLT_FILTER                                    Filter,
  [in]           LPCGUID                                        EcpType,
  [in]           ULONG                                          SizeOfContext,
  [in]           FSRTL_ALLOCATE_ECP_FLAGS                       Flags,
  [in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
  [in, out]      PVOID                                          LookasideList,
  [out]          PVOID                                          *EcpContext
);

Paramètres

[in] Filter

Pointeur de filtre opaque vers 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] EcpType

Pointeur vers un GUID qui indique le type de la structure de contexte ECP. Pour plus d’informations, consultez Utilisation de GUID dans les pilotes .

[in] SizeOfContext

Taille, en octets, de la structure de contexte ECP.

[in] Flags

Définit les options d’allocation de pool. Si la valeur du paramètre SizeOfContext est supérieure à la taille, en octets, de la liste de recherche donnée, la structure de contexte ECP est allouée à partir du pool système au lieu de la liste de recherche. Dans ce cas, si le paramètre Flags contient la valeur d’indicateur de bits FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA, le pool système alloué par la routine est facturé sur le quota de mémoire du processus actuel. Pour plus d’informations, consultez le paramètre Flags de FltAllocateExtraCreateParameter . Dans le cas plus classique où la mémoire de la structure de contexte ECP est allouée à partir de la liste de recherche, l’indicateur de bits FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA n’est pas utilisé par la routine.

[in, optional] CleanupCallback

Pointeur facultatif vers une routine de rappel de nettoyage définie par minifiltre de type PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. La routine de rappel de nettoyage est appelée lorsque la structure de contexte ECP est supprimée. Définissez ce paramètre sur NULL si une routine de rappel de nettoyage n’est pas applicable.

[in, out] LookasideList

Pointeur vers une liste de recherche initialisée dans laquelle tenter d’allouer le pool à partir de (pour la structure de contexte ECP). Pour initialiser la liste lookaside, utilisez la routine FltInitExtraCreateParameterLookasideList .

[out] EcpContext

Reçoit un pointeur vers la structure de contexte ECP allouée. Si la routine n’a pas pu allouer suffisamment de pool pour la structure de contexte ECP, EcpContext est NULL et la routine retourne status code STATUS_INSUFFICIENT_RESOURCES.

Valeur retournée

La routine FltAllocateExtraCreateParameterFromLookasideList peut retourner l’une des valeurs suivantes :

Code de retour Description
STATUS_INSUFFICIENT_RESOURCES La routine FltAllocateExtraCreateParameterFromLookasideList n’a pas pu allouer suffisamment de mémoire pour une structure de contexte ECP. Dans ce cas, EcpContext aura la valeur NULL.
STATUS_SUCCESS La structure de contexte ECP a été correctement allouée. Dans ce cas, un pointeur vers la structure allouée est retourné par le paramètre EcpContext .

Remarques

Cette routine est disponible à partir de Windows Vista.

La routine FltAllocateExtraCreateParameterFromLookasideList alloue un pool de mémoire pour une structure de contexte ECP à partir de la liste de recherche paginée ou non paginée donnée. Toutefois, si la taille de la structure de contexte ECP (telle que définie par le paramètre SizeOfContext ) est supérieure à la liste de recherche, la routine alloue par analogie de la mémoire du pool système paginé ou non paginé.

Utilisez la routine FltInitExtraCreateParameterLookasideList pour initialiser une liste de recherche de pool paginée ou non paginée. Utilisez la routine FltAllocateExtraCreateParameterFromLookasideList pour allouer une structure de contexte ECP à partir de la liste de recherche et la routine FltFreeExtraCreateParameter pour libérer la structure de contexte ECP.

Utilisez la routine FltDeleteExtraCreateParameterLookasideList pour libérer une liste de lookaside.

Les pilotes doivent libérer toutes les structures de contexte ECP et les listes de lookaside qu’ils créent avant le déchargement. Toutefois, si un pilote de filtre de système de fichiers ou de système de fichiers joint un fournisseur d’environnement à un ECP_LIST existant ou nouvellement créé lors du traitement d’une demande de IRP_MJ_CREATE, ce fournisseur d’environnement est automatiquement nettoyé à la fin de l’IRP. Par conséquent, un pilote de filtre n’a pas besoin d’propre les fournisseurs d’environnement qui sont ajoutés dynamiquement. Cela permet à l’ECP d’un pilote de filtre d’être correctement propagé sur les points d’analyse, un processus qui peut nécessiter la génération de plusieurs demandes IRP_MJ_CREATE.

Pour plus d’informations sur l’utilisation de listes de lookaside avec des pilotes, consultez Utilisation des Listes lookaside.

Configuration requise

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

Voir aussi

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltDeleteExtraCreateParameterLookasideList

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInitExtraCreateParameterLookasideList

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK