Função KeSetImportanceDpc (ntddk.h)

A rotina KeSetImportanceDpc especifica quanto tempo a rotina DPC é executada.

Sintaxe

void KeSetImportanceDpc(
  [in, out] PRKDPC          Dpc,
  [in]      KDPC_IMPORTANCE Importance
);

Parâmetros

[in, out] Dpc

Ponteiro para o objeto DPC do chamador, que KeInitializeDpc já inicializou.

[in] Importance

Especifica um dos seguintes valores definidos pelo sistema para determinar o comportamento de KeInsertQueueDpc e IoRequestDpc quando qualquer rotina é usada para enfileirar o DPC.

LowImportance

Coloque o DPC no final da fila DPC e não inicie o processamento da fila.

MediumImportance

Coloque o DPC no final da fila DPC. Se o DPC for atribuído à fila DPC do processador atual, comece a processar a fila imediatamente. MediumImportance é o valor padrão para Importance.

MediumHighImportance

Coloque o DPC no final da fila DPC e comece a processar a fila imediatamente. MediumHighImportance está disponível apenas no Windows Vista e versões posteriores do Windows.

HighImportance

Coloque o DPC no início da fila DPC e comece a processar a fila imediatamente.

Retornar valor

Nenhum

Comentários

A rotina KeSetImportanceDpc influencia quanto tempo um DPC é executado depois de ser enfileirado determinando:

  • O local do DPC dentro da fila DPC. Normalmente, as rotinas KeInsertQueueDpc e IoRequestDpc colocam um DPC no final da fila. Se um driver chamar KeSetImportanceDpc pela primeira vez com Importance = HighImportance, KeInsertQueueDpc e IoRequestDpc colocarão o DPC no início da fila.
  • Quando o sistema começa a processar a fila DPC. Normalmente, KeInsertQueueDpc e IoRequestDpc começam imediatamente a processar a fila DPC para o processador atual. Os drivers podem especificar valores diferentes para Importância para alterar esse comportamento.
Por padrão, os DPCs são atribuídos à fila DPC do processador atual, portanto, especificar MediumImportance ou MediumHighImportance for Importance tem o mesmo efeito. No entanto, os drivers podem usar KeSetTargetProcessorDpc para alterar o processador ao qual o DPC será atribuído.

Para o Windows Vista e versões posteriores do sistema operacional Windows, você pode usar KeSetImportanceDpc para DPCs encadeados. Se o chamador definir Importance como HighImportance, o DPC será colocado no início da fila; caso contrário, ele será colocado no final. A rotina não afeta quando a fila de DPC encadeada é processada. Os DPCs encadeados são sempre processados por um thread dedicado em IRQL = PASSIVE_LEVEL. Para obter mais informações sobre DPCs encadeados, consulte Introdução aos DPCs encadeados.

Observe que um driver deve chamar KeSetImportanceDpc antes de chamar KeInsertQueueDpc e IoRequestDpc para ter qualquer efeito.

Para obter mais informações sobre como o sistema processa a fila DPC, consulte Organização de Filas de DPC.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho ntddk.h (inclua Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualquer nível

Confira também

IoRequestDpc

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

KeSynchronizeExecution