KeInitializeQueue, fonction (ntifs.h)
La routine KeInitializeQueue initialise un objet de 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 |
---|---|
d’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 satisfaits simultanément. Si ce paramètre n’est pas fourni, le nombre de processeurs de la machine est utilisé.
Valeur de retour
Aucun
Remarques
En règle générale, 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 une explicite pour empêcher un trop grand nombre de ses threads dédiés d’attendre simultanément sur son objet de 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 de files d’attente internes gérées par le pilote, consultez Driver-Managed files d’attente IRP.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ntifs.h (include Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |