Função WdfInterruptSetExtendedPolicy (wdfinterrupt.h)

[Aplica-se a KMDF e UMDF]

O método WdfInterruptSetExtendedPolicy especifica a prioridade de interrupção, a afinidade do processador, a política de afinidade e o grupo de processadores para uma interrupção especificada.

Sintaxe

void WdfInterruptSetExtendedPolicy(
  [in] WDFINTERRUPT                   Interrupt,
  [in] PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
);

Parâmetros

[in] Interrupt

Um identificador para um objeto de interrupção de estrutura.

[in] PolicyAndGroup

Um ponteiro para uma estrutura WDF_INTERRUPT_EXTENDED_POLICY que o chamador aloca e inicializa.

Retornar valor

Nenhum

Comentários

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

O Windows Vista e versões posteriores do sistema operacional permitem que os drivers usem o método WdfInterruptSetPolicy para especificar a prioridade, a afinidade do processador e a política de afinidade de uma interrupção. Além disso, as versões 1.9 e posteriores do KMDF permitem que os drivers usem o método WdfInterruptSetExtendedPolicy para especificar a prioridade, a afinidade do processador, a política de afinidade e o grupo de processadores de uma interrupção.

Para obter informações sobre como usar o Registro para substituir os valores que WdfInterruptSetExtendedPolicy define, consulte Afinidade e prioridade de interrupção.

Se um driver estiver em execução em uma versão do sistema operacional anterior ao Windows 7, a estrutura ignorará o valor especificado pelo driver para o número do grupo de processadores ao chamar WdfInterruptSetExtendedPolicy.

Se um driver estiver em execução em uma versão do sistema operacional anterior ao Windows Vista, a estrutura ignorará todos os valores especificados pelo driver ao chamar WdfInterruptSetPolicy ou WdfInterruptSetExtendedPolicy.

Para obter mais informações sobre valores do Registro e seções INF que especificam a prioridade, a afinidade do processador e a política de afinidade de uma interrupção, consulte Interromper afinidade e prioridade.

Se um driver chama WdfInterruptSetExtendedPolicy, ele normalmente faz isso em sua função de retorno de chamada EvtDriverDeviceAdd , depois de chamar WdfInterruptCreate.

Se o driver criar interrupções em EvtDevicePrepareHardware, não use WdfInterruptSetPolicy ou WdfInterruptSetExtendedPolicy. Em vez disso, você pode aplicar a política em EvtDeviceFilterAddResourceRequirements manipulando diretamente o requisito de recurso de interrupção que essa função de retorno de chamada recebe em seu parâmetro IoResourceRequirementsList .

Para obter mais informações sobre como lidar com interrupções em drivers baseados em estrutura, consulte Tratamento de interrupções de hardware.

Exemplos

O exemplo de código a seguir chama WDF_INTERRUPT_EXTENDED_POLICY_INIT para inicializar uma estrutura WDF_INTERRUPT_EXTENDED_POLICY ; define valores para a política, a prioridade e o conjunto de processadores de destino; e chama WdfInterruptSetExtendedPolicy. O exemplo define a prioridade normal para a interrupção e atribui a interrupção ao processador 0 no grupo de processadores 2.

#define AFFINITY_MASK(n) ((ULONG_PTR)1 << (n))

WDF_INTERRUPT_EXTENDED_POLICY myExtendedPolicy;

WDF_INTERRUPT_EXTENDED_POLICY_INIT(&myExtendedPolicy);
myExtendedPolicy.Policy = WdfIrqPolicySpecifiedProcessors;
myExtendedPolicy.Priority = WdfIrqPriorityNormal;
myExtendedPolicy.TargetProcessorSetAndGroup.Mask = AFFINITY_MASK(0);
myExtendedPolicy.TargetProcessorSetAndGroup.Group = 2;

WdfInterruptSetExtendedPolicy(
                              Interrupt,
                              &myExtendedPolicy
 );

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1,9
Versão mínima do UMDF 2,0
Cabeçalho wdfinterrupt.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Regras de conformidade da DDI DriverCreate(kmdf)

Confira também

WdfInterruptSetPolicy