Reputation: 508
call dword ptr __imp__VirtualProtect@16
What exactly is the @ doing? Is it just part of the name of the function or? I've seen this in multiple locations and am wondering what it stands for?
Upvotes: 0
Views: 217
Reputation: 1378
It means that a call to PROC _imp_VirtualProtect takes 16 bytes of parameters (like 4 DWORDs, or 2 DWORDs and 4 WORDs, or... )
The @16 is generated in the output object code by MASM when the PROC is defined (CDECL or STDCALL). The linker sees the "mangled" name.
Upvotes: 1
Reputation: 386706
It's part of the symbol name. The symbol name differs from the function name since function names aren't unique. See Name mangling.
Upvotes: 1