Función WdfInterruptSetPolicy (wdfinterrupt.h)
[Se aplica a KMDF y UMDF]
El método WdfInterruptSetPolicy especifica la prioridad de interrupción, la afinidad del procesador y la directiva de afinidad para una interrupción especificada.
Sintaxis
void WdfInterruptSetPolicy(
[in] WDFINTERRUPT Interrupt,
[in] WDF_INTERRUPT_POLICY Policy,
[in] WDF_INTERRUPT_PRIORITY Priority,
[in] KAFFINITY TargetProcessorSet
);
Parámetros
[in] Interrupt
Identificador de un objeto de interrupción de marco.
[in] Policy
Enumerador con tipo WDF_INTERRUPT_POLICY que especifica una directiva de afinidad de procesador para la interrupción.
[in] Priority
Enumerador con tipo WDF_INTERRUPT_PRIORITY que especifica una prioridad para la interrupción.
[in] TargetProcessorSet
Valor con tipo KAFFINITY que especifica una afinidad de procesador para la interrupción, si el parámetro Policy se establece en WdfIrqPolicySpecifiedProcessors.
Valor devuelto
None
Observaciones
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Windows Vista y versiones posteriores del sistema operativo permiten a los controladores especificar la prioridad de una interrupción, la afinidad de procesador y la directiva de afinidad. Para obtener información sobre cómo usar el Registro para invalidar los valores que WdfInterruptSetPolicy establece, vea Affinity and Priority (Afinidad de interrupción y prioridad).
Si un controlador se ejecuta en una versión del sistema operativo anterior a Windows Vista, el marco omite los valores que el controlador especifica cuando llama a WdfInterruptSetPolicy.
Para obtener más información sobre los valores del Registro y las secciones INF que especifican la prioridad de una interrupción, la afinidad de procesador y la directiva de afinidad, consulte Afinidad de interrupción y Prioridad.
Si un controlador llama a WdfInterruptSetPolicy, normalmente lo hace en su función de devolución de llamada EvtDriverDeviceAdd , después de llamar a WdfInterruptCreate.
Si el controlador crea interrupciones en EvtDevicePrepareHardware, no use WdfInterruptSetPolicy o WdfInterruptSetExtendedPolicy. En su lugar, aplique la directiva en EvtDeviceFilterAddResourceRequirements, manipulando directamente el requisito de recurso de interrupción que recibe esta función de devolución de llamada en su parámetro IoResourceRequirementsList .
Para obtener más información sobre el control de interrupciones en controladores basados en marcos, consulte Control de interrupciones de hardware.
Ejemplos
En el ejemplo de código siguiente se asigna una interrupción del dispositivo al procesador 0, con prioridad normal.
#define AFFINITY_MASK(n) ((ULONG_PTR)1 << (n))
WdfInterruptSetPolicy(
Interrupt,
WdfIrqPolicySpecifiedProcessors,
WdfIrqPriorityNormal,
AFFINITY_MASK(0)
);
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfinterrupt.h (incluir Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf) |