Partager via


NdisInitializeNPagedLookasideList, fonction (ndis.h)

La fonction NdisInitializeNPagedLookasideList initialise une liste de lookaside. Après une initialisation réussie, les blocs de taille fixe non paginés peuvent être alloués à partir de la liste de lookaside et libérés.

Syntaxe

void NdisInitializeNPagedLookasideList(
  [in]           PNPAGED_LOOKASIDE_LIST Lookaside,
  [in, optional] PALLOCATE_FUNCTION     Allocate,
  [in, optional] PFREE_FUNCTION         Free,
  [in]           ULONG                  Flags,
  [in]           SIZE_T                 Size,
  [in]           ULONG                  Tag,
  [in]           USHORT                 Depth
);

Paramètres

[in] Lookaside

Pointeur vers une structure de NPAGED_LOOKASIDE_LIST qui contient l’en-tête de liste de lookaside fournie par l’appelant à initialiser. La structure doit être alignée sur 16 octets sur les plateformes 64 bits. Le pilote doit fournir une tête de liste qui est résidente, c’est-à-dire dans un espace système non paginé.

[in, optional] Allocate

Point d’entrée de fonction qui a la valeur NULL ou spécifie le point d’entrée d’une fonction Allocate fournie par l’appelant qui alloue une entrée de la taille spécifiée dans le membre Size chaque fois qu’elle est appelée. Si Allocate a la valeur NULL, le La fonction NdisAllocateFromNPagedLookasideList alloue ensuite des entrées pour le compte de l’appelant. Si l’appelant fournit une fonction Allocate , il doit également fournir une fonction Free .

[in, optional] Free

Point d’entrée de fonction qui est NULL ou spécifie le point d’entrée d’une fonction Free fournie par l’appelant qui libère une entrée de la taille spécifiée dans le membre Size chaque fois qu’il est appelé. Si Free a la valeur NULL, le La fonction NdisFreeToNPagedLookasideList libère ensuite les entrées au nom de l’appelant.

[in] Flags

Doit être zéro. Ce paramètre est réservé.

[in] Size

Taille, en octets, de chaque entrée à allouer par la suite à partir de la liste de lookaside.

[in] Tag

Balise de pool fournie par l’appelant pour les entrées de liste de choix. La balise est une chaîne de quatre caractères délimitée par des guillemets simples (par exemple, « derF »). Les caractères sont généralement spécifiés dans l’ordre inverse, de sorte qu’ils sont plus faciles à lire lors du dumping du pool ou du suivi de l’utilisation du pool dans le débogueur.

[in] Depth

Doit être zéro. Ce paramètre est également réservé.

Valeur de retour

None

Remarques

NdisInitializeNPagedLookasideList initialise l’en-tête de liste fourni par l’appelant, mais n’alloue aucune mémoire pour les entrées de liste. Les entrées initiales sont allouées en fonction des besoins, soit avec des appels à Fonction NdisAllocateFromNPagedLookasideList ou par la fonction de rappel Allocate fournie par le pilote au niveau du paramètre Allocate . La liste est remplie car le pilote libère les entrées dans la liste avec le Fonction NdisFreeToNPagedLookasideList . Les entrées sont collectées dans la liste jusqu’à ce qu’une limite déterminée par le système mais de taille dynamique soit atteinte. Ensuite, toutes les entrées excédentaires dans la liste de lookaside sont retournées au pool non paginé, soit par NdisFreeToNPagedLookasideList , soit par des appels à la fonction de rappel Gratuit fournie par le pilote au niveau du paramètre Free .

Toutes les entrées de la liste de choix sont de la même taille, qui est spécifiée dans le paramètre Size . Une liste de lookaside est particulièrement utile pour les pilotes qui doivent allouer dynamiquement et libérer des zones de contexte de taille fixe pour conserver l’état d’exécution de leurs opérations d’E/S en suspens. Par instance, les pilotes NDIS orientés connexion sont susceptibles de trouver des listes de lookaside particulièrement utiles, car ces pilotes conservent généralement un ensemble dynamique de zones de contexte pour suivre les appels sortants et entrants.

Il est plus efficace pour un conducteur de permettre NdisAllocateFromNPagedLookasideList et Fonctions NdisFreeToNPagedLookasideList pour gérer l’allocation et la désallocation des entrées (voir les fonctions ExAllocatePoolWithTag et ExFreePool ). Toutefois, un pilote qui effectue le suivi de l’état en interne sur son utilisation de la mémoire peut fournir des fonctions Allocate et Free à NdisInitializeNPagedLookasideList.

Les appelants de NdisInitializeNPagedLookasideList doivent s’exécuter sur IRQL <= DISPATCH_LEVEL, mais s’exécutent généralement à PASSIVE_LEVEL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisInitializeNPagedLookasideList (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir NdisInitializeNPagedLookasideList (NDIS 5.1)) dans Windows XP.
Plateforme cible Desktop (Expérience utilisateur)
En-tête ndis.h (inclure Ndis.h)
IRQL <= DISPATCH_LEVEL (voir la section Notes)
Règles de conformité DDI Irql_Miscellaneous_Function(ndis)

Voir aussi

ExAllocatePoolWithTag

ExFreePool

NPAGED_LOOKASIDE_LIST

NdisAllocateFromNPagedLookasideList NdisDeleteNPagedLookasideList NdisFreeToNPagedLookasideList