Função KeInsertByKeyDeviceQueue (wdm.h)

A rotina KeInsertByKeyDeviceQueue adquire o bloqueio de rotação para o DeviceQueue especificado e enfileira uma entrada de acordo com o valor de chave de classificação especificado se a fila do dispositivo estiver definida como um estado ocupado.

Sintaxe

BOOLEAN KeInsertByKeyDeviceQueue(
  [in, out] PKDEVICE_QUEUE       DeviceQueue,
  [in, out] PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
  [in]      ULONG                SortKey
);

Parâmetros

[in, out] DeviceQueue

Ponteiro para um objeto de controle do tipo de fila do dispositivo para o qual o chamador fornece o armazenamento.

[in, out] DeviceQueueEntry

Ponteiro para a entrada da fila do dispositivo a ser inserida na fila do dispositivo de acordo com o valor de chave específico.

[in] SortKey

Especifica o valor da chave de classificação que determina a posição na fila do dispositivo na qual inserir a entrada.

Retornar valor

Se a fila do dispositivo estiver vazia, FALSE será retornado, o que significa que DeviceQueueEntry não está inserido na fila do dispositivo.

Comentários

O bloqueio de rotação da fila do dispositivo especificado é adquirido e o estado da fila do dispositivo é verificado. Se a fila do dispositivo estiver definida como um estado ocupado, o IRP especificado pelo DeviceQueueEntry será inserido na fila do dispositivo de acordo com seu valor de chave de classificação e o bloqueio de rotação da fila do dispositivo será liberado.

A nova entrada é posicionada na fila do dispositivo após todas as entradas na fila com valores de chave de classificação menores ou iguais ao seu valor de chave de classificação e precedendo todas as entradas com valores de chave de classificação maiores.

Se KeInsertByKeyDeviceQueue retornar FALSE, o chamador deverá começar a processar o IRP. Uma chamada para KeInsertDeviceQueue ou KeInsertByKeyDeviceQueue quando a fila está vazia faz com que a fila do dispositivo faça a transição de um estado não ocupado para um estado ocupado.

Essa rotina é para o código que enfileira uma solicitação de E/S para um driver de dispositivo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL DISPATCH_LEVEL
Regras de conformidade da DDI HwStorPortProhibitedDDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), MarkingQueuedIrps(wdm)

Confira também

KeInitializeDeviceQueue

KeInsertDeviceQueue

KeRemoveDeviceQueue

KeRemoveEntryDeviceQueue