Função KeSetTargetProcessorDpcEx (wdm.h)
A rotina de 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 de KDPC, que é uma estrutura opaca do sistema que representa o objeto DPC. Esse objeto deve ter sido inicializado anteriormente pela rotina de KeInitializeDpc.
[in] ProcNumber
Um ponteiro para uma estrutura de PROCESSOR_NUMBER alocada por 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.
Valor de retorno
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. |
Observações
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 o keInsertQueueDpc ou rotina de IoRequestDpc para enfileirar um DPC para ser executado posteriormente.
KeSetTargetProcessorDpcEx pode especificar o processador de destino para DPCs comuns e de DPCs encadeados. Um DPC comum não pode ser preempido até mesmo por um thread de alta prioridade, mas um DPC encadeado pode ser preempido por threads críticos que têm prioridades suficientemente altas.
Uma rotina relacionada, KeSetTargetProcessorDpc, especifica um processador de destino para um DPC, mas essa rotina, ao contrário 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 grupos sejam executados corretamente em sistemas multiprocessadores que tenham dois ou mais grupos. No entanto, os drivers que usam 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 |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 7. |
da Plataforma de Destino | Universal |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | Qualquer nível |