Je voudrais interroger l'ID de thread actuel sans effectuer un appel windowsAPI. Selon cet article wikipedia http://en.wikipedia.org/wiki/Win32_Thread_Information_Block, il devrait être possible d'accéder directement à l'ID du fil. J'ai essayé ce code:Windows actuel ThreadID sans appel d'API Windows
void* tibPtr;
__asm {
mov EAX, FS:[0x18]
mov [tibPtr], EAX
}
int* ptrToThreadID = (int*)(((char*)tibPtr)+0x24);
que je comprends, déréférencement ptrToThreadID devrait YELD maintenant chaque fois que le ThreadID actuel.
Cependant, il me donne un résultat différent de la fonction WinAPI GetCurrentThreadId() et aussi la valeur vers laquelle il pointe ne change pas.
Qu'est-ce que je fais mal? Je compile pour Win32, mais exécute Windows Vista 64bit. Ai-je besoin de rechercher le threadID à un autre emplacement sur des systèmes 64 bits?
Cela me semble tellement faux ... – ypnos
Pouvez-vous expliquer pourquoi vous ne voulez pas utiliser les API Win32? – JaredPar
parce que cela est utilisé dans le code critique de performance et exécuté très souvent, en fait à chaque déréférencement de mes smart_pointers. Je sais que cela semble faux - mais c'est pour un projet de recherche, il ne doit pas fonctionner sur un ordinateur - juste doit être rapide – Mat