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