Compartir a través de


Función ZwSetInformationThread (ntddk.h)

La rutina ZwSetInformationThread establece la prioridad de un subproceso.

Sintaxis

NTSYSAPI NTSTATUS ZwSetInformationThread(
  [in] HANDLE          ThreadHandle,
  [in] THREADINFOCLASS ThreadInformationClass,
  [in] PVOID           ThreadInformation,
  [in] ULONG           ThreadInformationLength
);

Parámetros

[in] ThreadHandle

Identificador del objeto de subproceso. Para crear un subproceso y obtener un identificador, llame a PsCreateSystemThread. Para especificar el subproceso actual, use la macro ZwCurrentThread .

[in] ThreadInformationClass

Uno de los valores definidos por el sistema en la enumeración THREADINFOCLASS (vea ntddk.h), ThreadPriority, ThreadBasePriority, ThreadPagePriority o ThreadPowerThrottlingState.

[in] ThreadInformation

Puntero a una variable que especifica la información que se va a establecer.

Si ThreadInformationClass es ThreadPriority, este valor debe ser > LOW_PRIORITY y <= HIGH_PRIORITY.

Si ThreadInformationClass es ThreadBasePriority, este valor debe estar dentro del intervalo de prioridad base válido del sistema y la clase de prioridad original para el subproceso especificado. Es decir, si la clase de prioridad de un subproceso es variable, la prioridad base del subproceso no se puede restablecer a un valor de prioridad en tiempo real y viceversa.

Si ThreadInformationClass es ThreadPagePriority, este valor es un puntero a una estructura de PAGE_PRIORITY_INFORMATION , consulte ntddk.h. El valor de miembro PagePriority debe ser uno de estos valores.

Si ThreadInformationClass es ThreadPowerThrottlingState, este valor es un puntero a una estructura de POWER_THROTTLING_THREAD_STATE , vea ntddk.h. El valor de miembro PagePriority debe ser uno de estos valores.

Valor Significado
MEMORY_PRIORITY_VERY_LOW Prioridad de memoria muy baja.
MEMORY_PRIORITY_LOW Prioridad de memoria baja.
MEMORY_PRIORITY_MEDIUM Prioridad de memoria media.
MEMORY_PRIORITY_BELOW_NORMAL Por debajo de la prioridad de memoria normal.
MEMORY_PRIORITY_NORMAL Prioridad de memoria normal. Esta es la prioridad predeterminada para todos los subprocesos y procesos del sistema.

[in] ThreadInformationLength

Tamaño, en bytes, de ThreadInformation.

Valor devuelto

ZwSetInformationThread devuelve STATUS_SUCCESS si se ha realizado correctamente o el código de error NTSTATUS adecuado en caso de error. Los posibles códigos de error incluyen STATUS_INFO_LENGTH_MISMATCH o STATUS_INVALID_PARAMETER.

Comentarios

Los controladores de nivel superior pueden llamar a ZwSetInformationThread para establecer la prioridad de un subproceso para el que tienen un identificador.

El autor de la llamada debe tener THREAD_SET_INFORMATION derechos de acceso para el subproceso especificado para llamar a esta rutina.

Normalmente, los controladores intermedios y de dispositivo que configuran subprocesos creados por controladores llaman a KeSetBasePriorityThread o KeSetPriorityThread desde sus subprocesos creados por el controlador, en lugar de llamar a ZwSetInformationThread. Sin embargo, un controlador puede llamar a ZwSetInformationThread para aumentar la prioridad de un subproceso creado por el controlador antes de que se ejecute ese subproceso.

Los controladores de modo kernel pueden llamar a la función ZwSetInformationThread con ThreadPagePriority para especificar la prioridad de página de un subproceso.

Para ayudar a mejorar el rendimiento del sistema, los controladores deben usar la función con ThreadPagePriority para reducir la prioridad de página de los subprocesos que realizan operaciones en segundo plano o acceden a archivos y datos a los que no se espera que se vuelva a acceder pronto. Por ejemplo, una aplicación antimalware podría reducir la prioridad de los subprocesos implicados en el examen de archivos.

Para determinar la prioridad de página de un subproceso, llame a ZwQueryInformationThread.

Si la llamada a esta función se produce en modo de usuario, debe usar el nombre NtSetInformationThread en lugar de ZwSetInformationThread.

En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx y ZwXxx de una rutina de Servicios del sistema nativo de Windows se pueden comportar de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ntddk.h (incluya Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

Uso de las versiones Nt y Zw de las rutinas nativas de Servicios del sistema