multithreading winapi process windows-services thread-priority

multithreading - Establecer una prioridad de subproceso en un servicio no tiene efecto



winapi process (1)

¿Se necesita alguna configuración adicional antes de poder establecer prioridades de subprocesos en un servicio de Windows?

En mi servicio, tengo algunos hilos que cada uno llama a la función CreateProcess() para iniciar una aplicación externa. Me gustaría ajustar las prioridades de hilo (o proceso) a normal o lower , dependiendo de algunos otros factores.

El problema es que la función SetThreadPriority() falla con un error 6 (¿manejador no válido?). Estoy pasando un identificador obtenido de PROCESS_INFORMATION::hThread (después de llamar a CreateProcess() por supuesto), por lo que creo que el identificador debe ser válido.

También intenté establecer la prioridad en los procesos utilizando la función SetPriorityClass() , que también falla.

El servicio está conectado como un usuario local.


¿Tal vez no tienes los derechos de acceso correctos? MSDN en SetThreadPriority dice:

hHaga [in] Un manejador al hilo cuyo valor de prioridad debe establecerse.

El identificador debe tener el acceso THREAD_SET_INFORMATION o THREAD_SET_LIMITED_INFORMATION correcto. Para obtener más información, vea Seguridad de subprocesos y Derechos de acceso.

Windows Server 2003 y Windows XP / 2000: el identificador debe tener el derecho de acceso THREAD_SET_INFORMATION.