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

Weitere Informationen

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread