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 l'archiviazione residente nel pool non con pagine. 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 | 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 i quali è possibile soddisfare simultaneamente le attese nell'oggetto queue. Se questo parametro non viene fornito, viene usato il numero di processori nel computer.
Valore restituito
nessuno
Osservazioni
In genere il chiamante keInitializeQueue crea anche un set di thread dedicati da accodare e dequeare le voci. Tale chiamante può specificare un conteggio esplicito per impedire a troppi thread dedicati di attendere simultaneamente l'oggetto coda.
KeInitializeQueue imposta lo stato iniziale del segnale iniziale dell'oggetto coda su Not Signaled.
Per altre informazioni sull'uso delle code interne gestite dal driver, vedere Code IRP gestite da driver.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h (include Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |