Funzione KeInitializeQueue (ntifs.h)
La routine KeInitializeQueue inizializza un oggetto coda in cui i thread possono attendere le voci.
Sintassi
void KeInitializeQueue(
[out] PRKQUEUE Queue,
[in] ULONG Count
);
Parametri
[out] Queue
Puntatore a una struttura KQUEUE per cui il chiamante deve fornire spazio di archiviazione residente nel pool non di paging. Questa struttura è definita come segue:
typedef struct _KQUEUE {
DISPATCHER_HEADER Header;
LIST_ENTRY EntryListHead;
ULONG CurrentCount;
ULONG MaximumCount;
LIST_ENTRY ThreadListHead;
} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
Membro | Significato |
---|---|
intestazione | Intestazione della coda. |
EntryListHead | Puntatore alla prima voce nella coda. |
CurrentCount | Numero corrente di thread in attesa della coda. |
MaximumCount | Il numero massimo di thread simultanei che la coda può soddisfare le attese. |
ThreadListHead | Puntatore alla prima voce nell'elenco di thread. |
[in] Count
Numero massimo di thread per cui l'attesa sull'oggetto coda può essere soddisfatta simultaneamente. Se questo parametro non viene specificato, viene utilizzato il numero di processori nel computer.
Valore restituito
Nessuno
Osservazioni
In genere il chiamante di KeInitializeQueue crea anche un set di thread dedicati da accodare e rimuovere dalla coda le relative voci. Un chiamante di questo tipo può specificare un conteggio esplicito per impedire a troppi thread dedicati di attendere simultaneamente sull'oggetto coda.
KeInitializeQueue imposta lo stato iniziale del segnale dell'oggetto coda su Not Signaled.
Per altre informazioni sull'uso delle code interne gestite dal driver, vedere Driver-Managed code IRP.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | ntifs.h (include Ntifs.h) |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |