WdfInterruptSetExtendedPolicy-Funktion (wdfinterrupt.h)
[Gilt für KMDF und UMDF]
Die WdfInterruptSetExtendedPolicy-Methode gibt die Interruptpriorität, die Prozessoraffinität, die Affinitätsrichtlinie und die Prozessorgruppe für einen angegebenen Interrupt an.
Syntax
void WdfInterruptSetExtendedPolicy(
[in] WDFINTERRUPT Interrupt,
[in] PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
);
Parameter
[in] Interrupt
Ein Handle für ein Framework-Interruptobjekt.
[in] PolicyAndGroup
Ein Zeiger auf eine WDF_INTERRUPT_EXTENDED_POLICY Struktur, die der Aufrufer zuordnet und initialisiert.
Rückgabewert
Keine
Bemerkungen
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Windows Vista und höhere Versionen des Betriebssystems ermöglichen Es Treibern, die WdfInterruptSetPolicy-Methode zu verwenden, um die Priorität, die Prozessoraffinität und die Affinitätsrichtlinie eines Interrupts anzugeben. Darüber hinaus ermöglichen die KmDF-Versionen 1.9 und höher Treibern die Verwendung der WdfInterruptSetExtendedPolicy-Methode , um die Priorität, die Prozessoraffinität, die Affinitätsrichtlinie und die Prozessorgruppe eines Interrupts anzugeben.
Informationen zur Verwendung der Registrierung zum Überschreiben der Werte, die WdfInterruptSetExtendedPolicy festlegt, finden Sie unter Interrupt Affinity and Priority.For information how to use the registry to override the values that WdfInterruptSetExtendedPolicy sets, see Interrupt Affinity and Priority.
Wenn ein Treiber unter einer früheren Betriebssystemversion als Windows 7 ausgeführt wird, ignoriert das Framework den Wert, den der Treiber für die Prozessorgruppennummer angibt, wenn WdfInterruptSetExtendedPolicy aufgerufen wird.
Wenn ein Treiber auf einer früheren Betriebssystemversion als Windows Vista ausgeführt wird, ignoriert das Framework alle Werte, die der Treiber beim Aufrufen von WdfInterruptSetPolicy oder WdfInterruptSetExtendedPolicy angibt.
Weitere Informationen zu Registrierungswerten und INF-Abschnitten, in denen die Priorität, die Prozessoraffinität und die Affinitätsrichtlinie eines Interrupts angegeben werden, finden Sie unter Interrupt affinity and priority.for more information about registry values and INF sections that specify an priority eines Interrupts, processor affinity, and affinity policy, see Interrupt Affinity and Priority.
Wenn ein Treiber WdfInterruptSetExtendedPolicy aufruft, erfolgt dies in der Regel in seiner Rückruffunktion EvtDriverDeviceAdd , nachdem WdfInterruptCreate aufgerufen wurde.
Wenn Ihr Treiber Interrupts in EvtDevicePrepareHardware erstellt, verwenden Sie nicht WdfInterruptSetPolicy oder WdfInterruptSetExtendedPolicy. Stattdessen können Sie stattdessen eine Richtlinie in EvtDeviceFilterAddResourceRequirements anwenden, indem Sie die Interruptressourcenanforderung, die diese Rückruffunktion im IoResourceRequirementsList-Parameter empfängt , direkt bearbeiten.
Weitere Informationen zur Behandlung von Interrupts in frameworkbasierten Treibern finden Sie unter Behandeln von Hardwareunterbrechungen.
Beispiele
Im folgenden Codebeispiel wird WDF_INTERRUPT_EXTENDED_POLICY_INIT aufgerufen, um eine WDF_INTERRUPT_EXTENDED_POLICY-Struktur zu initialisieren. legt Werte für den Richtlinien-, Prioritäts- und Zielprozessorsatz fest; und ruft WdfInterruptSetExtendedPolicy auf. Im Beispiel wird die normale Priorität für den Interrupt festgelegt und der Interrupt dem Prozessor 0 in Prozessorgruppe 2 zugewiesen.
#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
);
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.9 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | wdfinterrupt.h (einschließen von Wdf.h) |
Bibliothek | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf) |