Compartilhar via


Função KeInitializeQueue (ntifs.h)

A rotina KeInitializeQueue inicializa um objeto de fila no qual os threads podem aguardar as entradas.

Sintaxe

VOID KeInitializeQueue(
  [out] PRKQUEUE Queue,
  [in]  ULONG    Count
);

Parâmetros

[out] Queue

Ponteiro para uma estrutura KQUEUE para a qual o chamador deve fornecer armazenamento residente no pool nãopagado. Essa estrutura é definida da seguinte maneira:

typedef struct _KQUEUE {
    DISPATCHER_HEADER Header;
    LIST_ENTRY EntryListHead;
    ULONG CurrentCount;
    ULONG MaximumCount;
    LIST_ENTRY ThreadListHead;
} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
Membro Significado
cabeçalho Cabeçalho da fila.
EntryListHead Ponteiro para a primeira entrada na fila.
CurrentCount Número atual de threads aguardando na fila.
MaximumCount Número máximo de threads simultâneos pelos quais a fila pode satisfazer as esperas.
ThreadListHead Ponteiro para a primeira entrada na lista de threads.

[in] Count

O número máximo de threads para os quais as esperas no objeto de fila podem ser atendidas simultaneamente. Se esse parâmetro não for fornecido, o número de processadores no computador será usado.

Valor de retorno

Nenhum

Observações

Normalmente, o chamador de KeInitializeQueue também cria um conjunto de threads dedicados para enfileirar e desempir suas entradas. Esse chamador pode especificar uma contagem explícita para impedir que muitos de seus threads dedicados esperem simultaneamente em seu objeto de fila.

KeInitializeQueue define o estado de sinal inicial do objeto de fila como Não Sinalizado.

Para obter mais informações sobre como usar filas internas gerenciadas pelo driver, consulte Driver-Managed filas IRP.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho ntifs.h (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

Consulte também

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread