Macro NdisInterlockedInsertTailList (ndis.h)
La funzione NdisInterlockedInsertTailList inserisce una voce, in genere un pacchetto, alla fine di un elenco collegato doubly in modo che l'accesso all'elenco venga sincronizzato in modo sicuro multiprocessore.
Sintassi
void NdisInterlockedInsertTailList(
[in] _ListHead,
[in] _ListEntry,
[in] _SpinLock
);
Parametri
[in] _ListHead
Puntatore all'intestazione dell'elenco collegato doubly in cui deve essere inserita una voce.
[in] _ListEntry
Puntatore alla voce da inserire alla fine dell'elenco.
[in] _SpinLock
Puntatore a un blocco di selezione fornito dal chiamante, utilizzato per sincronizzare l'accesso all'elenco.
Valore restituito
nessuno
Osservazioni
Prima di chiamare NdisInterlockedInsertTailList, un driver deve inizializzare la variabile in ListHead con la funzione NdisInitializeListHead e la variabile in SpinLock con la funzione NdisAllocateSpinLock . Il driver deve anche fornire spazio di archiviazione residente per queste variabili e per la coda interna.
Il blocco di selezione fornito dal chiamante impedisce a qualsiasi altra funzione di accedere alla coda interna del driver mentre NdisInterlockedInsertTailList inserisce la voce specificata, anche quando il driver è in esecuzione in un computer multiprocessore.
NdisInterlockedInsertTailList genera irQL per DISPATCH_LEVEL quando acquisisce il blocco spin specificato e ripristina l'IRQL originale prima che restituisca il controllo. Di conseguenza, qualsiasi funzione driver che chiama NdisInterlockedInsertTailList non può essere codice impaginabile.
Per convertire di nuovo un valore restituito nell'indirizzo della voce inserita, un driver può utilizzare la macro CONTAINING_RECORD .
Se NdisInterlockedInsertTailList viene chiamato in IRQL >= DISPATCH_LEVEL, l'archiviazione per il parametro ListHead e le voci dell'elenco devono essere residenti.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere NdisInterlockedInsertTailList (NDIS 5.1)) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisInterlockedInsertTailList (NDIS 5.1)) in Windows XP. |
Piattaforma di destinazione | Universale |
Intestazione | ndis.h (include Ndis.h) |
Libreria | Ndis.lib |
IRQL | Qualsiasi livello |