Share via


Fonction KeInitializeQueue (ntifs.h)

La routine KeInitializeQueue initialise un objet file d’attente sur lequel les threads peuvent attendre les entrées.

Syntaxe

void KeInitializeQueue(
  [out] PRKQUEUE Queue,
  [in]  ULONG    Count
);

Paramètres

[out] Queue

Pointeur vers une structure KQUEUE pour laquelle l’appelant doit fournir un stockage résident dans un pool non paginé. Cette structure est définie comme suit :

typedef struct _KQUEUE {
    DISPATCHER_HEADER Header;
    LIST_ENTRY EntryListHead;
    ULONG CurrentCount;
    ULONG MaximumCount;
    LIST_ENTRY ThreadListHead;
} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
Membre Signification
En-tête En-tête de file d’attente.
EntryListHead Pointeur vers la première entrée de la file d’attente.
Currentcount Nombre actuel de threads en attente dans la file d’attente.
MaximumCount Nombre maximal de threads simultanés que la file d’attente peut satisfaire aux attentes.
ThreadListHead Pointeur vers la première entrée de la liste de threads.

[in] Count

Nombre maximal de threads pour lesquels les attentes sur l’objet file d’attente peuvent être satisfaites simultanément. Si ce paramètre n’est pas fourni, le nombre de processeurs dans la machine est utilisé.

Valeur de retour

None

Remarques

Généralement, l’appelant de KeInitializeQueue crée également un ensemble de threads dédiés pour mettre en file d’attente et mettre en file d’attente ses entrées. Un tel appelant peut spécifier un nombre explicite pour empêcher un trop grand nombre de ses threads dédiés d’attendre simultanément sur son objet file d’attente.

KeInitializeQueue définit l’état de signal initial de l’objet file d’attente sur Not Signaled.

Pour plus d’informations sur l’utilisation des files d’attente internes gérées par les pilotes, consultez Files d’attente IRP gérées par le pilote.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ntifs.h (inclure Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

Voir aussi

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread