Função KeSetTargetProcessorDpcEx (wdm.h)
A rotina KeSetTargetProcessorDpcEx especifica o processador no qual uma rotina de DPC será executada.
Sintaxe
NTSTATUS KeSetTargetProcessorDpcEx(
[in, out] PKDPC Dpc,
[in] PPROCESSOR_NUMBER ProcNumber
);
Parâmetros
[in, out] Dpc
Um ponteiro para o objeto DPC do chamador. Esse parâmetro aponta para uma estrutura KDPC , que é uma estrutura de sistema opaca que representa o objeto DPC. Esse objeto deve ter sido inicializado anteriormente pela rotina KeInitializeDpc .
[in] ProcNumber
Um ponteiro para uma estrutura de PROCESSOR_NUMBER alocada pelo chamador que identifica o processador de destino no qual o DPC será enfileirado e executado. Essa estrutura especifica um grupo e um processador dentro desse grupo.
Retornar valor
KeSetTargetProcessorDpcEx retornará STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, ele retornará o seguinte:
Código de retorno | Descrição |
---|---|
|
O parâmetro ProcNumber aponta para um número de processador inválido. |
Comentários
Cada processador em um sistema multiprocessador tem sua própria fila de DPC. KeSetTargetProcessorDpcEx especifica qual fila do processador o sistema deve usar quando o driver chama a rotina KeInsertQueueDpc ou IoRequestDpc para enfileirar um DPC a ser executado posteriormente.
KeSetTargetProcessorDpcEx pode especificar o processador de destino para DPCs comuns e DPCs encadeados. Um DPC comum não pode ser precedido por um thread de alta prioridade, mas um DPC encadeado pode ser precedido por threads críticos de tempo que têm prioridades suficientemente altas.
Uma rotina relacionada, KeSetTargetProcessorDpc, especifica um processador de destino para um DPC, mas essa rotina, ao contrário de KeSetTargetProcessorDpcEx, não especifica um grupo para o processador de destino. A partir do Windows 7, KeSetTargetProcessorDpc pressupõe que o processador de destino pertence ao grupo 0. Esse comportamento garante que os drivers existentes que chamam KeSetTargetProcessorDpc e que não usam recursos orientados a grupo sejam executados corretamente em sistemas multiprocessadores que têm dois ou mais grupos. No entanto, os drivers que usam quaisquer recursos orientados a grupos no Windows 7 e versões posteriores do sistema operacional Windows devem chamar KeSetTargetProcessorDpcEx em vez de KeSetTargetProcessorDpc.
Uma chamada para KeSetTargetProcessorDpcEx que ocorre depois que um objeto DPC foi enfileirado não tem efeito na seleção de um processador para a rotina DPC a ser executada. Para controlar a seleção do processador de destino, uma chamada KeSetTargetProcessorDpcEx deve ocorrer antes da chamada para KeInsertQueueDpc ou IoRequestDpc que enfileira o objeto DPC.
Para obter mais informações sobre filas DPC, consulte Organização de Filas DPC.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 7. |
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 |