Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Gilt für KMDF und UMDF]
Die WdfInterruptSetExtendedPolicy- Methode gibt die Interruptpriorität, die Prozessoraffinität, die Affinität, die Affinität und die Prozessorgruppe für einen angegebenen Interrupt an.
Syntax
VOID WdfInterruptSetExtendedPolicy(
[in] WDFINTERRUPT Interrupt,
[in] PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
);
Die Parameter
[in] Interrupt
Ein Handle zu einem Framework-Interruptobjekt.
[in] PolicyAndGroup
Ein Zeiger auf eine WDF_INTERRUPT_EXTENDED_POLICY Struktur, die der Aufrufer zuweist und initialisiert.
Rückgabewert
Nichts
Bemerkungen
Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.
Windows Vista und höhere Versionen des Betriebssystems ermöglichen Treibern die Verwendung der WdfInterruptSetPolicy Methode, um die Priorität, Prozessoraffinität und Affinitätsrichtlinie eines Interrupts anzugeben. Darüber hinaus ermöglichen die Versionen 1.9 und höher von KMDF Treibern die Verwendung der WdfInterruptSetExtendedPolicy- Methode, um die Priorität, Prozessoraffinität, Affinitätsrichtlinie und Prozessorgruppe eines Interrupts anzugeben.
Informationen zur Verwendung der Registrierung zum Überschreiben der Werte, die WdfInterruptSetExtendedPolicy- festlegen, finden Sie unter Interrupt Affinity and Priority.
Wenn ein Treiber auf einer Betriebssystemversion ausgeführt wird, die älter als Windows 7 ist, ignoriert das Framework den Wert, den der Treiber für die Prozessorgruppennummer angibt, wenn er WdfInterruptSetExtendedPolicyaufruft.
Wenn ein Treiber auf einer Früheren Betriebssystemversion als Windows Vista ausgeführt wird, ignoriert das Framework alle Werte, die der Treiber angibt, wenn er WdfInterruptSetPolicy oder WdfInterruptSetExtendedPolicyaufruft.
Weitere Informationen zu Registrierungswerten und INF-Abschnitten, die die Priorität, die Prozessoraffinität und die Affinitätsrichtlinie angeben, finden Sie unter Interrupt Affinity and Priority.
Wenn ein Treiber WdfInterruptSetExtendedPolicyaufruft, erfolgt dies in der Regel in seiner EvtDriverDeviceAdd Rückruffunktion nach dem Aufrufen WdfInterruptCreate.
Wenn der Treiber Unterbrechungen in EvtDevicePrepareHardware-erstellt, verwenden Sie nicht WdfInterruptSetPolicy oder WdfInterruptSetExtendedPolicy. Stattdessen können Sie richtlinien in EvtDeviceFilterAddResourceRequirementsanwenden, indem Sie die Interrupt-Ressourcenanforderung, die diese Rückruffunktion erhält, direkt in der IoResourceRequirementsList Parameter bearbeiten.
Weitere Informationen zum Behandeln von Unterbrechungen in frameworkbasierten Treibern finden Sie unter Behandeln von Hardware-Interrupts.
Beispiele
Im folgenden Codebeispiel wird WDF_INTERRUPT_EXTENDED_POLICY_INIT aufgerufen, um eine WDF_INTERRUPT_EXTENDED_POLICY-Struktur zu initialisieren; legt Werte für die Richtlinien-, Prioritäts- und Zielprozessorsätze fest; und ruft WdfInterruptSetExtendedPolicyauf. Das Beispiel legt die normale Priorität für den Interrupt fest und weist den Interrupt prozessor 0 in der Prozessorgruppe 2 zu.
#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 |
| Minimale KMDF-Version | 1.9 |
| Mindest-UMDF-Version | 2.0 |
| Kopfzeile | wdfinterrupt.h (einschließen Wdf.h) |
| Bibliothek | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| IRQL | <=DISPATCH_LEVEL |
| DDI-Complianceregeln | DriverCreate(kmdf) |