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

Vedi anche

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread