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)

Consulte también

WdfInterruptSetPolicy