Función KeSetTargetProcessorDpcEx (wdm.h)
La rutina KeSetTargetProcessorDpcEx especifica el procesador en el que se ejecutará una rutina DPC.
Sintaxis
NTSTATUS KeSetTargetProcessorDpcEx(
[in, out] PKDPC Dpc,
[in] PPROCESSOR_NUMBER ProcNumber
);
Parámetros
[in, out] Dpc
Puntero al objeto DPC del autor de la llamada. Este parámetro apunta a una estructura KDPC , que es una estructura del sistema opaca que representa el objeto DPC. Este objeto debe haberse inicializado previamente por la rutina KeInitializeDpc .
[in] ProcNumber
Puntero a una estructura de PROCESSOR_NUMBER asignada por el autor de la llamada que identifica el procesador de destino en el que se pondrá en cola y ejecutará el DPC. Esta estructura especifica un grupo y un procesador dentro de este grupo.
Valor devuelto
KeSetTargetProcessorDpcEx devuelve STATUS_SUCCESS si la llamada se realiza correctamente. De lo contrario, devuelve lo siguiente:
Código devuelto | Descripción |
---|---|
|
El parámetro ProcNumber apunta a un número de procesador no válido. |
Comentarios
Cada procesador de un sistema multiprocesador tiene su propia cola DPC. KeSetTargetProcessorDpcEx especifica qué cola del procesador debe usar el sistema cuando el controlador llama a la rutina KeInsertQueueDpc o IoRequestDpc para poner en cola un DPC que se va a ejecutar más adelante.
KeSetTargetProcessorDpcEx puede especificar el procesador de destino para los DPC normales y los DPC en subprocesos. Ni siquiera un subproceso de prioridad alta puede reemplazar un DPC normal, pero un DPC con subprocesos puede ser reemplazado por subprocesos críticos para el tiempo que tienen prioridades suficientemente altas.
Una rutina relacionada, KeSetTargetProcessorDpc, especifica un procesador de destino para un DPC, pero esta rutina, a diferencia de KeSetTargetProcessorDpcEx, no especifica un grupo para el procesador de destino. A partir de Windows 7, KeSetTargetProcessorDpc supone que el procesador de destino pertenece al grupo 0. Este comportamiento garantiza que los controladores existentes que llaman a KeSetTargetProcessorDpc y que no usen características orientadas a grupos se ejecutarán correctamente en sistemas multiprocesador que tengan dos o más grupos. Sin embargo, los controladores que usan cualquier característica orientada a grupos en Windows 7 y versiones posteriores del sistema operativo Windows deben llamar a KeSetTargetProcessorDpcEx en lugar de KeSetTargetProcessorDpc.
Una llamada a KeSetTargetProcessorDpcEx que se produce después de que se haya puesto en cola un objeto DPC no tiene ningún efecto en la selección de un procesador para que se ejecute la rutina DPC. Para controlar la selección del procesador de destino, debe producirse una llamada KeSetTargetProcessorDpcEx antes de la llamada a KeInsertQueueDpc o IoRequestDpc que pone en cola el objeto DPC.
Para obtener más información sobre las colas de DPC, consulte Organización de colas de DPC.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 7. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | Cualquier nivel |