2009-07-15 4 views

Répondre

15

Oui - Go "Debug/Nouveau point d'arrêt/Pause à la fonction ..." et collez ceci:

{,,kernel32.dll}[email protected] 

dans la zone de fonction.

Cela suppose une construction Unicode - remplacez W par A pour les générations ANSI. Un peu d'explication: le morceau @40 fait partie de la convention d'appel stdcall, et donne le nombre d'octets de paramètres que prend la fonction. En win32, c'est presque toujours 4 fois le nombre de paramètres. Le trait de soulignement fait également partie de la convention d'appel stdcall.

Une note connexe: parfois le nom de la fonction comme on le voit par le débogueur est différent de son vrai nom - voir ce billet de blog pour un exemple, et comment trouver le bon nom à utiliser: Setting a Visual Studio breakpoint on a Win32 API function in user32.dll

+4

Mieux vaut briser les deux. En raison du comportement générique non-const de CreateProcessW, même les applications Unicode peuvent appeler CreateProcessA. La macro CreateProcess ne masque pas les deux déclarations de fonction sous-jacentes afin qu'elles restent appelables. Cela s'applique également aux macros similaires pour d'autres paires de fonctions. – MSalters

+2

Une chose supplémentaire à noter est que vous devez d'abord télécharger les symboles 'kernel32.dll'. Vous pouvez le faire à partir du menu contextuel dans Debug/Windows/Modules. – ulidtko

+0

explication de la syntaxe {,,,} est ici: https://msdn.microsoft.com/en-us/library/wztycb7f(v=vs.100).aspx note que, pour une raison quelconque, l'article n'existe pas pour studio visuel supérieur à vs2010 –

Questions connexes