Funzione WdfInterruptSetExtendedPolicy (wdfinterrupt.h)
[Si applica a KMDF e UMDF]
Il metodo WdfInterruptSetExtendedPolicy specifica la priorità di interrupt, l'affinità del processore, i criteri di affinità e il gruppo di processori per un interrupt specificato.
Sintassi
void WdfInterruptSetExtendedPolicy(
[in] WDFINTERRUPT Interrupt,
[in] PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
);
Parametri
[in] Interrupt
Handle per un oggetto interrupt del framework.
[in] PolicyAndGroup
Puntatore a una struttura WDF_INTERRUPT_EXTENDED_POLICY allocata e inizializzata dal chiamante.
Valore restituito
Nessuno
Osservazioni:
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Windows Vista e versioni successive del sistema operativo consentono ai driver di usare il metodo WdfInterruptSetPolicy per specificare la priorità di un interrupt, l'affinità del processore e i criteri di affinità. Inoltre, le versioni 1.9 e successive di KMDF consentono ai driver di usare il metodo WdfInterruptSetExtendedPolicy per specificare la priorità di un interrupt, l'affinità del processore, i criteri di affinità e il gruppo di processori.
Per informazioni su come utilizzare il Registro di sistema per eseguire l'override dei valori set di WdfInterruptSetExtendedPolicy, vedere l'affinità di interruzione e la priorità.
Se un driver è in esecuzione in una versione del sistema operativo precedente a Windows 7, il framework ignora il valore specificato dal driver per il numero del gruppo di processori quando chiama WdfInterruptSetExtendedPolicy.
Se un driver è in esecuzione in una versione del sistema operativo precedente a Windows Vista, il framework ignora tutti i valori specificati dal driver quando chiama WdfInterruptSetPolicy o WdfInterruptSetExtendedPolicy.
Per altre informazioni sui valori del Registro di sistema e le sezioni INF che specificano la priorità di un interrupt, l'affinità del processore e i criteri di affinità, vedere l'affinità di interruzione e la priorità.
Se un driver chiama WdfInterruptSetExtendedPolicy, in genere lo fa nel relativo EvtDriverDeviceAdd funzione di callback, dopo aver chiamato WdfInterruptCreate.
Se il driver crea interrupt in EvtDevicePrepareHardware, non usare WdfInterruptSetPolicy o WdfInterruptSetExtendedPolicy. È invece possibile applicare i criteri in EvtDeviceFilterAddResourceRequirements, modificando direttamente il requisito di risorsa interrupt ricevuto da questa funzione di callback nel relativo parametro IoResourceRequirementsList.
Per altre informazioni sulla gestione degli interrupt nei driver basati su framework, vedere Gestione degli interrupt hardware.
Esempi
Nell'esempio di codice seguente viene chiamato WDF_INTERRUPT_EXTENDED_POLICY_INIT per inizializzare una struttura WDF_INTERRUPT_EXTENDED_POLICY; imposta i valori per i criteri, la priorità e il set di processori di destinazione; e chiama WdfInterruptSetExtendedPolicy. Nell'esempio viene impostata la priorità normale per l'interrupt e viene assegnato l'interrupt al processore 0 nel gruppo di processori 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
);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
versione minima di KMDF | 1.9 |
versione minima di UMDF | 2.0 |
intestazione | wdfinterrupt.h (include Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
regole di conformità DDI | DriverCreate(kmdf) |