Probleme avec la fonction GetCurrentThread sous XP

Probleme avec la fonction GetCurrentThread sous XP - C - Programmation

Marsh Posté le 22-10-2004 à 14:41:39    

Je n'arrive pas a faire marcher la fonction GetCurrentThread qui est sensée me renvoyer  un handle vers le thread courant mais qui ne marche pas.
 
Est-ce un probleme connu sous windows XP ?
 

Reply

Marsh Posté le 22-10-2004 à 14:41:39   

Reply

Marsh Posté le 22-10-2004 à 15:15:53    

La fonction marche très bien sous XP. Comment sais tu qu'elle ne fonctionne pas ? Poste ton source


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 22-10-2004 à 15:51:44    

Code :
  1. #include <stdio.h>
  2. #include <windows.h>
  3. void Routine()
  4. {
  5. while(1) {
  6.  printf("Je suis dans un thread avec un Handle = %d\n", (int)GetCurrentThread());
  7.  Sleep(2000);
  8. }
  9. }
  10. void main()
  11. {
  12. HANDLE ThreadHdl;
  13. DWORD  IDThread;
  14. ThreadHdl = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Routine,(LPVOID)0,0,&IDThread);                         
  15. printf("J'ai lancé un thread avec un Handle = %d\n", (int)ThreadHdl);
  16. getchar();
  17. }


 
Donc je lance un tread qui a un handle donné et la fonction GetCurrentThread me renvoie -2 tout le temps.
 
Visiblement ce probleme n'a rien a voir avec XP puisque ca fait pareil sous 2000.
Qu'est ce qui ne va pas dans mon utilisation de GetCurrentThread ?

Reply

Marsh Posté le 23-10-2004 à 17:47:46    

up :/

Reply

Marsh Posté le 23-10-2004 à 18:02:31    

et -2 est-il un code d'erreur ?  
 
CreateThread() et GetCurrentThread() te retournent-ils des choses différentes ?

Reply

Marsh Posté le 23-10-2004 à 21:10:50    

bjone a écrit :

et -2 est-il un code d'erreur ?  


 
Je ne sais pas
 

bjone a écrit :


CreateThread() et GetCurrentThread() te retournent-ils des choses différentes ?


 
Oui c'est ca le probleme, la fonction GetCurrentThread me renvoie tout le temps -2 alors que CreateThread me renvoie un handle correct et different pour chaque thread (ce qui semble logique).
 
Quelqu'un peut t'il essayer le code chez lui ?
 

Reply

Marsh Posté le 23-10-2004 à 23:57:47    

http://msdn.microsoft.com/library/ [...] thread.asp

Citation :


retrieves a pseudo handle  
[...]
A pseudo handle is a special constant that is interpreted as the current thread handle. The calling thread can use this handle to specify itself whenever a thread handle is required. Pseudo handles are not inherited by child processes.
[...]
The function cannot be used by one thread to create a handle that can be used by other threads to refer to the first thread. The handle is always interpreted as referring to the thread that is using it. A thread can create a "real" handle to itself that can be used by other threads, or inherited by other processes, by specifying the pseudo handle as the source handle in a call to the DuplicateHandle function.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 25-10-2004 à 10:38:42    

Ok j'avais deja regardé cette doc mais j'avais pas bien compris. Merci pour votre aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed