Funzione KeSetTargetProcessorDpcEx (wdm.h)
La routine KeSetTargetProcessorDpcEx specifica il processore in cui verrà eseguita una routine DPC.
Sintassi
NTSTATUS KeSetTargetProcessorDpcEx(
[in, out] PKDPC Dpc,
[in] PPROCESSOR_NUMBER ProcNumber
);
Parametri
[in, out] Dpc
Puntatore all'oggetto DPC del chiamante. Questo parametro punta a una struttura KDPC , ovvero una struttura di sistema opaca che rappresenta l'oggetto DPC. Questo oggetto deve essere stato inizializzato in precedenza dalla routine KeInitializeDpc .
[in] ProcNumber
Puntatore a una struttura di PROCESSOR_NUMBER allocata dal chiamante che identifica il processore di destinazione in cui verrà accodato ed eseguito il DPC. Questa struttura specifica un gruppo e un processore all'interno di questo gruppo.
Valore restituito
KeSetTargetProcessorDpcEx restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, restituisce quanto segue:
Codice restituito | Descrizione |
---|---|
|
Il parametro ProcNumber punta a un numero di processore non valido. |
Commenti
Ogni processore in un sistema multiprocessore ha la propria coda DPC. KeSetTargetProcessorDpcEx specifica quale coda del processore deve usare quando il driver chiama la routine KeInsertQueueDpc o IoRequestDpc per accodare un DPC da eseguire in un secondo momento.
KeSetTargetProcessorDpcEx può specificare il processore di destinazione sia per i DPC normali che per i DPC con thread. Un DPC normale non può essere preceduto da un thread ad alta priorità, ma un DPC thread può essere preceduto da thread critici che hanno priorità sufficienti.
Una routine correlata, KeSetTargetProcessorDpc, specifica un processore di destinazione per un DPC, ma questa routine, a differenza di KeSetTargetProcessorDpcEx, non specifica un gruppo per il processore di destinazione. A partire da Windows 7, KeSetTargetProcessorDpc presuppone che il processore di destinazione appartenga al gruppo 0. Questo comportamento garantisce che i driver esistenti che chiamano KeSetTargetProcessorDpc e che non usino funzionalità orientate al gruppo verranno eseguite correttamente nei sistemi multiprocessore con due o più gruppi. Tuttavia, i driver che usano funzionalità orientate al gruppo in Windows 7 e versioni successive del sistema operativo Windows devono chiamare KeSetTargetProcessorDpcEx anziché KeSetTargetProcessorDpc.
Una chiamata a KeSetTargetProcessorDpcEx che si verifica dopo la coda di un oggetto DPC non ha alcun effetto sulla selezione di un processore per l'esecuzione della routine DPC. Per controllare la selezione del processore di destinazione, è necessario che venga eseguita una chiamata KeSetTargetProcessorDpcEx prima della chiamata a KeInsertQueueDpc o IoRequestDpc che accoda l'oggetto DPC.
Per altre informazioni sulle code DPC, vedere Organizzazione di code DPC.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 7. |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Qualsiasi livello |