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
STATUS_INVALID_PARAMETER
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

Vedi anche

IoRequestDpc

KDPC

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

PROCESSOR_NUMBER