Macro NdisInterlockedInsertTailList (ndis.h)
La fonction NdisInterlockedInsertTailList insère une entrée, généralement un paquet, à la fin d’une liste doublement liée afin que l’accès à la liste soit synchronisé de manière multiprocesseur-sécurisé.
Syntaxe
void NdisInterlockedInsertTailList(
[in] _ListHead,
[in] _ListEntry,
[in] _SpinLock
);
Paramètres
[in] _ListHead
Pointeur vers la tête de la liste doublement liée dans laquelle une entrée doit être insérée.
[in] _ListEntry
Pointeur vers l’entrée à insérer à la fin de la liste.
[in] _SpinLock
Pointeur vers un verrou de rotation fourni par l’appelant, utilisé pour synchroniser l’accès à la liste.
Valeur de retour
None
Remarques
Avant d’appeler NdisInterlockedInsertTailList, un pilote doit initialiser la variable à l’emplacement ListHead avec la fonction NdisInitializeListHead et la variable à SpinLock avec la fonction NdisAllocateSpinLock . Le pilote doit également fournir un stockage résident pour ces variables et pour sa file d’attente interne.
Le verrouillage de rotation fourni par l’appelant empêche toute autre fonction d’accéder à la file d’attente interne du pilote pendant que NdisInterlockedInsertTailList insère l’entrée donnée, même lorsque le pilote s’exécute sur un ordinateur multiprocesseur.
NdisInterlockedInsertTailList déclenche l’IRQL pour DISPATCH_LEVEL lorsqu’il acquiert le verrou de rotation donné et restaure l’IRQL d’origine avant qu’il ne retourne le contrôle. Par conséquent, toute fonction de pilote qui appelle NdisInterlockedInsertTailList ne peut pas être un code paginable.
Pour convertir une valeur retournée en adresse de l’entrée insérée, un pilote peut utiliser la macro CONTAINING_RECORD .
Si NdisInterlockedInsertTailList est appelé dans IRQL >= DISPATCH_LEVEL, le stockage du paramètre ListHead et des entrées de liste doit être résident.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisInterlockedInsertTailList (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir NdisInterlockedInsertTailList (NDIS 5.1)) dans Windows XP. |
Plateforme cible | Universal |
En-tête | ndis.h (inclure Ndis.h) |
Bibliothèque | Ndis.lib |
IRQL | N’importe quel niveau |