Funzione WdfInterruptSetExtendedPolicy (wdfinterrupt.h)
[Si applica a KMDF e UMDF]
Il metodo WdfInterruptSetExtendedPolicy specifica la priorità di interruzione, l'affinità del processore, i criteri di affinità e il gruppo di processore per un interruzione specificato.
Sintassi
void WdfInterruptSetExtendedPolicy(
[in] WDFINTERRUPT Interrupt,
[in] PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
);
Parametri
[in] Interrupt
Handle per un oggetto di interruzione del framework.
[in] PolicyAndGroup
Puntatore a una struttura WDF_INTERRUPT_EXTENDED_POLICY allocata e inizializzata dal chiamante.
Valore restituito
nessuno
Osservazioni
Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.
Windows Vista e versioni successive del sistema operativo consentono ai driver di usare il metodo WdfInterruptSetPolicy per specificare i criteri di priorità, affinità del processore e affinità di un interruzione. Inoltre, le versioni 1.9 e successive di KMDF consentono ai driver di usare il metodo WdfInterruptSetExtendedPolicy per specificare la priorità, l'affinità del processore, i criteri di affinità e il gruppo di processori.
Per informazioni su come usare il Registro di sistema per eseguire l'override dei valori impostati da WdfInterruptSetExtendedPolicy , vedere Interruzione di affinità e 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 di gruppo del processore 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 sulle sezioni INF che specificano la priorità, l'affinità del processore e i criteri di affinità, vedere Interruzione affinità e priorità.
Se un driver chiama WdfInterruptSetExtendedPolicy, in genere lo fa nella sua funzione EvtDriverDeviceAdd callback, dopo aver chiamato WdfInterruptCreate.
Se il driver crea interruzioni in EvtDevicePrepareHardware, non usare WdfInterruptSetPolicy o WdfInterruptSetExtendedPolicy. È invece possibile applicare criteri in EvtDeviceFilterAddResourceRequirements, modificando direttamente il requisito della risorsa di interruzione che questa funzione di callback riceve nel parametro IoResourceRequirementsList .
Per altre informazioni sulla gestione degli interruzioni nei driver basati su framework, vedere Gestione degli interruzioni hardware.
Esempio
L'esempio di codice seguente chiama WDF_INTERRUPT_EXTENDED_POLICY_INIT per inizializzare una struttura WDF_INTERRUPT_EXTENDED_POLICY ; imposta i valori per il set di processori criteri, priorità e destinazione; e chiama WdfInterruptSetExtendedPolicy. L'esempio imposta la priorità normale per l'interruzione e assegna l'interruzione al processore 0 nel gruppo di processore 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 KMDF minima | 1,9 |
Versione UMDF minima | 2,0 |
Intestazione | wdfinterrupt.h (include Wdf.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf) |