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

Consulte también

IoRequestDpc

KDPC

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

PROCESSOR_NUMBER