Condividi tramite


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

Vedere anche

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread