Condividi tramite


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

Vedi anche

CONTAINING_RECORD

NdisAllocateSpinLock

NdisInitializeListHead

NdisInterlockedInsertHeadList NdisInterlockedRemoveHeadList