KeInitializeQueue-Funktion (ntifs.h)
Die KeInitializeQueue-Routine initialisiert ein Warteschlangenobjekt, in dem 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 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 |
---|---|
Kopfzeile | Warteschlangenheader. |
EntryListHead | Zeiger auf den ersten Eintrag in der Warteschlange. |
CurrentCount | Aktuelle Anzahl von Threads, die in der Warteschlange warten. |
MaximumCount | Maximale Anzahl gleichzeitiger Threads, auf die die Warteschlange warten kann. |
ThreadListHead | Zeiger auf den ersten Eintrag in der Threadliste. |
[in] Count
Die maximale Anzahl von Threads, für die die Wartezeiten für das Warteschlangenobjekt gleichzeitig erfüllt werden können. Wenn dieser Parameter nicht angegeben wird, wird die Anzahl der Prozessoren auf dem Computer verwendet.
Rückgabewert
Keine
Bemerkungen
In der Regel erstellt der Aufrufer von KeInitializeQueue auch einen Satz dedizierter Threads, um sich in die Warteschlange zu stellen und die Einträge zu löschen. Ein solcher Aufrufer kann eine explizite Anzahl angeben, um zu verhindern, dass zu viele seiner dedizierten Threads gleichzeitig auf sein Warteschlangenobjekt warten.
KeInitializeQueue legt den anfänglichen Signalzustand des Warteschlangenobjekts auf Not Signaled fest.
Weitere Informationen zur Verwendung von vom Treiber verwalteten internen Warteschlangen finden Sie unter Vom Treiber verwaltete IRP-Warteschlangen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | ntifs.h (include Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |