Função KeInsertQueue (ntifs.h)
A rotina KeInsertQueue insere uma entrada na parte final da fila determinada se não puder usar imediatamente a entrada para satisfazer 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 no pool nãopagado.
[in, out] Entry
Ponteiro para uma entrada a ser enfileirada. Esse ponteiro deve ser um endereço de espaço no sistema residente.
Valor de retorno
KeInsertQueue retorna o estado de sinal anterior do de Fila dedeterminado. Se ele foi definido como zero (ou seja, não sinalizado) antes de keInsertQueue foi chamado, KeInsertQueue retorna 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 foi chamado.
Observações
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 é 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 esperando no 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 de Entrada de 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 Driver-Managed Filas.
Requisitos
Consulte também
ExAllocateFromNPagedLookasideList