Partager via


Fonction FsRtlAllocateExtraCreateParameterFromLookasideList (ntifs.h)

La routine FsRtlAllocateExtraCreateParameterFromLookasideList alloue le pool de mémoire 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 FsRtlAllocateExtraCreateParameterFromLookasideList(
  [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] EcpType

Pointeur vers un GUID qui indique le type d’ECP pour lequel une structure de contexte doit être allouée. Pour plus d’informations sur les fournisseurs d’environnement, consultez Utilisation de paramètres de création supplémentaires avec une opération de IRP_MJ_CREATE.

[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 lookaside vers laquelle pointe le paramètre LookasideList , FsRtlAllocateExtraCreateParameterFromLookasideList alloue la structure de contexte ECP à partir du pool système au lieu de la liste lookaside. 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 FsRtlAllocateExtraCreateParameterFromLookasideList est facturé sur le quota de mémoire du processus actuel. Pour plus d’informations sur les valeurs d’indicateur de bits, consultez le paramètre Flags de FsRtlAllocateExtraCreateParameter. Dans le cas plus classique, lorsque FsRtlAllocateExtraCreateParameterFromLookasideList alloue de la mémoire pour la structure de contexte ECP à partir de la liste de recherche, FsRtlAllocateExtraCreateParameterFromLookasideList ignore l’indicateur de bits FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA.

[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 à partir de laquelle FsRtlAllocateExtraCreateParameterFromLookasideList tente d’allouer un pool (pour la structure de contexte ECP). Pour initialiser la liste lookaside, utilisez la routine FsRtlInitExtraCreateParameterLookasideList .

[out] EcpContext

Pointeur vers un emplacement qui reçoit un pointeur vers la structure de contexte ECP allouée. Si FsRtlAllocateExtraCreateParameterFromLookasideList n’a pas pu allouer un pool suffisant pour la structure de contexte ECP, FsRtlAllocateExtraCreateParameterFromLookasideList définit EcpContext sur NULL et retourne status code STATUS_INSUFFICIENT_RESOURCES.

Valeur retournée

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

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

Remarques

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

Utilisez la routine FsRtlDeleteExtraCreateParameterLookasideList 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é une fois l’IRP terminé. 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 de ré-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
Client minimal pris en charge FsRtlAllocateExtraCreateParameterFromLookasideList est disponible à partir de Windows Vista.
Plateforme cible Universal
En-tête ntifs.h (inclure Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Voir aussi

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK