Partilhar via


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.

Valor de retorno

Nenhum

Observações

Uma verificação de bug ocorre se o driver fornece 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 conjuntos de WdfInterruptSetExtendedPolicy, consulte de 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 a afinidade e a prioridade.

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

Se o driver criar interrupções no 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 Tratando interrupções de hardware.

Exemplos

O exemplo de código a seguir chama WDF_INTERRUPT_EXTENDED_POLICY_INIT para inicializar uma estrutura de 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
da 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 de DDI DriverCreate(kmdf)

Consulte também

WdfInterruptSetPolicy