Domanda

È necessaria qualche configurazione aggiuntiva prima di poter impostare le priorità dei thread in un servizio Windows?

Nel mio servizio, ho alcuni thread che chiamano ciascuno la funzione CreateProcess () per avviare un'applicazione esterna. Vorrei adattare le priorità di thread (o processo) a normale o inferiore , a seconda di alcuni altri fattori.

Il problema è che la funzione SetThreadPriority () fallisce con un errore 6 (handle non valido?). Sto passando un handle ottenuto da PROCESS_INFORMATION :: hThread (dopo aver chiamato il CreateProcess () ovviamente), quindi penso che l'handle dovrebbe essere valido.

Ho anche provato a impostare la priorità sui processi usando la funzione SetPriorityClass () , che fallisce anche.

Il servizio è connesso come utente locale.

È stato utile?

Soluzione

Forse non hai i diritti di accesso corretti? MSDN su SetThreadPriority dice:

  

hThread [in] Un handle per il thread   il cui valore prioritario deve essere impostato.

     

L'handle deve avere il   THREAD_SET_INFORMATION o   Accesso THREAD_SET_LIMITED_INFORMATION   destra. Per ulteriori informazioni, vedere   Thread di sicurezza e diritti di accesso.

     

Windows Server 2003 e Windows   XP / 2000: l'handle deve avere il   THREAD_SET_INFORMATION diritto di accesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top