Macro NdisInterlockedRemoveHeadList (ndis.h)
La funzione NdisInterlockedRemoveHeadList rimuove una voce, in genere un pacchetto, dall'intestazione di un elenco collegato doubly in modo che l'accesso all'elenco venga sincronizzato in modo sicuro multiprocessore.
Sintassi
PLIST_ENTRY NdisInterlockedRemoveHeadList(
[in] _ListHead,
[in] _SpinLock
);
Parametri
[in] _ListHead
Puntatore all'intestazione dell'elenco collegato doubly da cui rimuovere una voce.
[in] _SpinLock
Puntatore a un blocco di selezione fornito dal chiamante, utilizzato per sincronizzare l'accesso all'elenco.
Valore restituito
NdisInterlockedRemoveHeadList restituisce un puntatore alla struttura LIST_ENTRY rimossa dall'elenco. Se l'elenco è vuoto, la routine restituisce NULL.
Commenti
Prima di chiamare qualsiasi NdisInterlocked.. La funzione List , 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.
Prima di chiamare NdisInterlockedRemoveHeadList, le voci vengono accodate con una o più chiamate a NdisInterlockedInsert. Funzioni elenco .
Il blocco spin fornito dal chiamante impedisce a qualsiasi altra funzione di accedere alla coda interna del driver mentre NdisInterlockedRemoveHeadList rimuove una voce, anche quando il driver è in esecuzione in un computer multiprocessore.
NdisInterlockedRemoveHeadList 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 NdisInterlockedRemoveHeadList 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 NdisInterlockedRemoveHeadList viene chiamato in IRQL >= DISPATCH_LEVEL, lo spazio di archiviazione per il parametro ListHead deve essere residente.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere NdisInterlockedRemoveHeadList (NDIS 5.1)) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisInterlockedRemoveHeadList (NDIS 5.1)) in Windows XP. |
Piattaforma di destinazione | Universale |
Intestazione | ndis.h (include Ndis.h) |
Libreria | Ndis.lib |
IRQL | Qualsiasi livello |