Partager via


Macro NdisInitializeSListHead (ndis.h)

La fonction NdisInitializeSListHead initialise la tête d’une liste liée séquencée, interlockée et liée.

Syntaxe

void NdisInitializeSListHead(
  [in]  SListHead
);

Paramètres

[in] SListHead

Pointeur vers la tête de liste fournie par l’appelant à initialiser, qui doit être en mémoire résidente. La structure doit être alignée sur des plateformes 64 bits.

Valeur de retour

Aucun

Remarques

NdisInitializeSListHead zéro initialise la tête de liste opaque à SListHead et définit le pointeur de première entrée sur NULL.

Le numéro de séquence d’une liste S est incrémenté chaque fois qu’une entrée est insérée ou supprimée de la liste.

Toutes les entrées d’une liste S doivent être non paginées.

Tout pilote qui utilise une liste S doit fournir un verrou de rotation au NdisInterlockedPushEntrySList et fonctions NdisInterlockedPopEntrySList. Avant son appel initial à l’une de ces fonctions, le pilote doit initialiser le verrou de rotation avec la fonction NdisAllocateSpinLock. Pour empêcher les blocages, le pilote ne doit pas contenir ce verrou de rotation lorsqu’il effectue des appels ultérieurs à NdisInterlockedPushEntrySList et NdisInterlockedPopEntrySList.

Pour gérer un pool d’entrées de taille fixe à partir de la mémoire non paginé, envisagez d’utiliser une liste de choix au lieu d’une liste S-List.

Les pilotes qui réessayent les opérations d’E/S doivent utiliser une file d’attente interblocée doublement liée et les NdisInterlockedInsertHeadList, NdisInterlockedInsertTailListet NdisInterlockedRemoveHeadList fonctions, plutôt qu’une liste S.

Si NdisInitializeSListHead est appelé au >IRQL = DISPATCH_LEVEL, le stockage du paramètre SListHead doit être résident.

Exigences

Exigence Valeur
client minimum pris en charge Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisInitializeSListHead (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir NdisInitializeSListHead (NDIS 5.1)) dans Windows XP.
plateforme cible Bureau
d’en-tête ndis.h (include Ndis.h)
IRQL N’importe quel niveau

Voir aussi

NdisInitializeNPagedLookasideList

NdisInterlockedPopEntrySList

NdisInterlockedPushEntrySList

NdisQueryDepthSList

NdisQueueIoWorkItem