Função KeSetImportanceDpc (wdm.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.
Para o Windows Vista e versões posteriores do sistema operacional Windows, você pode usar KeSetImportanceDpc para DPCs threaded. 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 DPC.
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 | Qualquer nível |