Partager via


FsRtlAllocateExtraCreateParameterFromLookasideList, fonction (ntifs.h)

La routine FsRtlAllocateExtraCreateParameterFromLookasideList alloue le pool de mémoire à partir d’une liste de lookaside 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 PPE, 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 choix vers laquelle le paramètre LookasideList pointe vers, 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 de l’indicateur de bits FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA, le pool système alloué par FsRtlAllocateExtraCreateParameterFromLookasideList est facturé par rapport au quota de mémoire du processus actuel. Pour plus d’informations sur les valeurs d’indicateur de bits, consultez le paramètre indicateurs de FsRtlAllocateExtraCreateParameter. Dans le cas plus classique, lorsque FsRtlAllocateExtraCreateParameterFromLookasideList alloue de la mémoire pour la structure de contexte ECP à partir de la liste lookaside, 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 minifilter 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 lookaside initialisée à partir de laquelle FsRtlAllocateExtraCreateParameterFromLookasideList tente d’allouer le 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 suffisamment de pool pour la structure de contexte ECP, FsRtlAllocateExtraCreateParameterFromLookasideList définit EcpContext à NULL et retourne le code d’état STATUS_INSUFFICIENT_RESOURCES.

Valeur de retour

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

Retourner le code 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 est 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 choix de pool paginée ou non paginée. Utilisez la routine FsRtlAllocateExtraCreateParameterFromLookasideList pour allouer une structure de contexte ECP à partir de la liste lookaside et la routine FsRtlFreeExtraCreateParameter routine pour libérer la structure de contexte ECP.

Utilisez la routine FsRtlDeleteExtraCreateParameterLookasideList pour libérer une liste lookaside.

Les pilotes doivent libérer toutes les structures de contexte ECP et les listes de choix 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 attache un fournisseur d’identité à un ECP_LIST existant ou nouvellement créé lors du traitement d’une demande de IRP_MJ_CREATE, ce fournisseur d’identité est automatiquement nettoyé lorsque l’IRP se termine. Par conséquent, un pilote de filtre n’a pas besoin de nettoyer dynamiquement 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éécriture, un processus qui peut nécessiter plusieurs requêtes de IRP_MJ_CREATE à générer.

Pour plus d’informations sur l’utilisation de listes lookaside avec des pilotes, consultez Using Lookaside Lists.

Exigences

Exigence Valeur
client minimum pris en charge FsRtlAllocateExtraCreateParameterFromLookasideList est disponible à partir de Windows Vista.
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Voir aussi

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK