Função KeInitializeQueue (ntifs.h)

A rotina KeInitializeQueue inicializa um objeto de fila no qual os threads podem aguardar 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 em 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 atender às 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.

Retornar valor

Nenhum

Comentários

Normalmente, o chamador de KeInitializeQueue também cria um conjunto de threads dedicados para enfileirar e remover a fila de 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 Filas IRP gerenciadas pelo driver.

Requisitos

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

Confira também

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread