NdisInitializeListHead-Makro (ndis.h)
Die NdisInitializeListHead-Funktion initialisiert eine doppelt verknüpfte, vom Treiber verwaltete Warteschlange.
Syntax
void NdisInitializeListHead(
[in] _ListHead
);
Parameter
[in] _ListHead
Ein Zeiger auf den vom Treiber zugewiesenen nicht ausgelagerten Speicher für den Kopf der ineinander verriegelten Warteschlange oder Liste.
Rückgabewert
Keine
Bemerkungen
NdisInitializeListHead kann von einer MiniportInitializeEx-Funktion oder von der DriverEntry-Routine eines Protokolltreibers aufgerufen werden, wenn der Treiber Anforderungen intern in die Warteschlange stellt. Miniporttreiber richten jedoch selten interne Warteschlangen ein, da die NDIS-Bibliothek Anforderungen und Pakete serialisiert, die an Miniporttreiber gesendet werden.
Jeder NDIS-Treiber, der eine interne Warteschlange verwaltet, ist für die Synchronisierung der Zugriffe von Treiberfunktionen auf Warteschlangeneinträge verantwortlich. Die NdisInterlockedXxxList-Funktionen stellen sicher, dass nur eine Treiberfunktion jederzeit auf Einträge in der Warteschlange zugreifen kann, auch wenn der Treiber auf einem Multiprozessorcomputer ausgeführt wird, da die Warteschlange durch eine vom Aufrufer bereitgestellte Spinsperre geschützt ist.
Für eine ineinander verriegelte Warteschlange muss der Treiber auch nicht ausgelagerten Speicher für eine Spinsperre bereitstellen. Es muss die Spinsperre mit der NdisAllocateSpinLock-Funktion initialisieren, bevor ein Zeiger auf diese Spinsperre an eine der NdisInterlockedXxxList-Funktionen übergeben wird .
Aufrufer von NdisInitializeListHead können in jedem IRQL ausgeführt werden. Wenn NdisInitializeListHead unter IRQL >= DISPATCH_LEVEL aufgerufen wird, muss der Speicher für ListHead resident sein.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisInitializeListHead (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisInitializeListHead (NDIS 5.1)) in Windows XP. |
Zielplattform | Desktop |
Kopfzeile | ndis.h (einschließlich Ndis.h) |
IRQL | Beliebige Ebene (siehe Abschnitt Hinweise) |
Weitere Informationen
DriverEntry von NDIS-Protokolltreibern
NdisInterlockedInsertHeadList NdisInterlockedInsertTailList NdisInterlockedRemoveHeadList