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 |