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) |