Função KeInsertQueue (ntifs.h)

A rotina KeInsertQueue insere uma entrada na parte final da fila especificada se não puder usar imediatamente a entrada para atender a uma espera de thread.

Sintaxe

LONG KeInsertQueue(
  [in, out] PRKQUEUE    Queue,
  [in, out] PLIST_ENTRY Entry
);

Parâmetros

[in, out] Queue

Ponteiro para um objeto de fila inicializado para o qual o chamador fornece armazenamento residente em pool nãopagado.

[in, out] Entry

Ponteiro para uma entrada a ser enfileirada. Esse ponteiro deve ser um endereço de espaço do sistema residente.

Retornar valor

KeInsertQueue retorna o estado de sinal anterior da Fila fornecida. Se ele foi definido como zero (ou seja, não sinalizado) antes de KeInsertQueue ser chamado, KeInsertQueue retornará zero, o que significa que nenhuma entrada foi enfileirada. Se não for zero (sinalizado), KeInsertQueue retornará o número de entradas que foram enfileiradas antes de KeInsertQueue ser chamado.

Comentários

As entradas a serem enfileiradas por KeInsertQueue devem ser alocadas do pool nãopagado. Por exemplo, a memória para entradas definidas pelo chamador pode ser alocada com ExAllocatePoolWithTag. Se o chamador alocar entradas de um tamanho fixo, criar uma lista lookaside com ExInitializeNPagedLookasideList e alocar dele com ExAllocateFromNPagedLookasideList será mais eficiente do que fazer chamadas frequentes para ExAllocatePoolWithTag, especialmente para entradas cujo tamanho não é um múltiplo de PAGE_SIZE.

Se algum thread estiver aguardando o objeto de fila quando KeInsertQueue for chamado, a espera de um único thread será atendida por essa chamada. O thread é expedido para execução com o ponteiro entry fornecido.

Se nenhum thread estiver aguardando no objeto de fila quando KeInsertQueue for chamado, a entrada fornecida será inserida na fila e o estado de sinal do objeto de fila será incrementado.

Para obter mais informações sobre como usar filas internas gerenciadas pelo driver, consulte Filas 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
Regras de conformidade da DDI HwStorPortProhibitedDDIs(storport)

Confira também

ExAllocateFromNPagedLookasideList

ExAllocatePoolWithTag

ExInitializeNPagedLookasideList

KeInitializeQueue

KeInsertHeadQueue

KeRemoveQueue