Il est bien connu que ATL accroche une fenêtre à son wndproc par thunking, qui remplace réellement hwnd avec ce pointeur en place et et saute au wndproc de sorte qu'un appel à wndproc (hwnd, ...) est en fait wndproc (ceci, ...).question sur esp Utilisation du registre dans ATL Windowing Thunking
est Ci-dessous le code assembleur les constructions thunk:
mov dword ptr [esp+0x4], pThis (esp+0x4 is hWnd)
Ma question est, puisque ce thunk EXÉCUTE ne fois, comment pouvons-nous être sûrs que [esp + 0x4] ne sera pas écrasé par CPU pour appeler une autre procédure, et la prochaine fois que wndproc (...) est appelée, hwnd est de nouveau passé? Ma compréhension est que [esp + 0x4] est un registre polyvalent réutilisable pour stocker un premier paramètre de n'importe quelle procédure.
Qu'est-ce qui ne va pas ici? comment la modification de hwnd est-elle garantie pour être perpétuelle?
Merci.