Función WdfInterruptSetExtendedPolicy (wdfinterrupt.h)
[Se aplica a KMDF y UMDF]
El método WdfInterruptSetExtendedPolicy especifica la prioridad de interrupción, la afinidad del procesador, la directiva de afinidad y el grupo de procesadores para una interrupción especificada.
Sintaxis
void WdfInterruptSetExtendedPolicy(
[in] WDFINTERRUPT Interrupt,
[in] PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
);
Parámetros
[in] Interrupt
Identificador de un objeto de interrupción de marco.
[in] PolicyAndGroup
Puntero a una estructura de WDF_INTERRUPT_EXTENDED_POLICY que el autor de la llamada asigna e inicializa.
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 usar el método WdfInterruptSetPolicy para especificar la prioridad de una interrupción, la afinidad de procesador y la directiva de afinidad. Además, las versiones 1.9 y posteriores de KMDF permiten a los controladores usar el método WdfInterruptSetExtendedPolicy para especificar la prioridad de una interrupción, la afinidad del procesador, la directiva de afinidad y el grupo de procesadores.
Para obtener información sobre cómo usar el Registro para invalidar los valores que WdfInterruptSetExtendedPolicy establece, vea Affinity and Priority.
Si un controlador se ejecuta en una versión del sistema operativo anterior a Windows 7, el marco omite el valor que el controlador especifica para el número del grupo de procesadores cuando llama a WdfInterruptSetExtendedPolicy.
Si un controlador se ejecuta en una versión del sistema operativo anterior a Windows Vista, el marco omite todos los valores que el controlador especifica cuando llama a WdfInterruptSetPolicy o WdfInterruptSetExtendedPolicy.
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 WdfInterruptSetExtendedPolicy, 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, puede aplicar 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 llama a WDF_INTERRUPT_EXTENDED_POLICY_INIT para inicializar una estructura de WDF_INTERRUPT_EXTENDED_POLICY ; establece valores para la directiva, la prioridad y el conjunto de procesadores de destino; y llama a WdfInterruptSetExtendedPolicy. En el ejemplo se establece la prioridad normal para la interrupción y se asigna la interrupción al procesador 0 en el grupo de procesadores 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 | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1,9 |
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) |