KeInitializeQueue-Funktion (ntifs.h)
Die KeInitializeQueue Routine initialisiert ein Warteschlangenobjekt, für das Threads auf Einträge warten können.
Syntax
void KeInitializeQueue(
[out] PRKQUEUE Queue,
[in] ULONG Count
);
Parameter
[out] Queue
Zeiger auf eine KQUEUE-Struktur, für die der Aufrufer einen residenten Speicher im nicht ausgelagerten Pool bereitstellen muss. Diese Struktur ist wie folgt definiert:
typedef struct _KQUEUE {
DISPATCHER_HEADER Header;
LIST_ENTRY EntryListHead;
ULONG CurrentCount;
ULONG MaximumCount;
LIST_ENTRY ThreadListHead;
} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
Mitglied | Bedeutung |
---|---|
Header- | Warteschlangenkopfzeile. |
EntryListHead- | Zeigen Sie auf den ersten Eintrag in der Warteschlange. |
CurrentCount- | Aktuelle Anzahl von Threads, die auf die Warteschlange warten. |
MaximumCount- | Die maximale Anzahl gleichzeitiger Threads, auf die die Warteschlange warten kann. |
ThreadListHead- | Zeigen Sie auf den ersten Eintrag in der Threadliste. |
[in] Count
Die maximale Anzahl von Threads, für die die Wartezeit auf das Warteschlangenobjekt gleichzeitig erfüllt werden kann. Wenn dieser Parameter nicht angegeben wird, wird die Anzahl der Prozessoren auf dem Computer verwendet.
Rückgabewert
Nichts
Bemerkungen
Normalerweise erstellt der Aufrufer von KeInitializeQueue auch eine Reihe dedizierter Threads für die Warteschlange und dequeue deren Einträge. Ein solcher Aufrufer kann eine explizite Count- angeben, um zu verhindern, dass zu viele seiner dedizierten Threads gleichzeitig auf das Warteschlangenobjekt warten.
KeInitializeQueue legt den anfänglichen Signalzustand des Warteschlangenobjekts auf "Nicht signalisiert" fest.
Weitere Informationen zur Verwendung von vom Treiber verwalteten internen Warteschlangen finden Sie unter Driver-Managed IRP-Warteschlangen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | ntifs.h (einschließlich Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | <= DISPATCH_LEVEL |