int WINAPI WinMain()函数

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

int WINAPI    WinMain(

HINSTANCE            hInstance,//当前实例句柄

HINSTANCE            hPrevInstance,//先前实例句柄

LPSTR                    lpCmdLine,//命令行参数

int        nCmdShow   //显示状态(最大化、最小化、隐藏)

);

WINAPI为调用约定,#define   WINAPI    __stdcall

具体的调用约定:   
1、__cdecl   
压栈顺序:从右至左   
清栈:函数调用者负责清空,称为caller   cleanup   
名字修饰(name   decoration):在函数名前加上下划线做前缀
注:c/C++函数的缺省调用约定   
    
2、__stdcall   
压栈顺序:从右至左   
清栈:被调用函数负责清空,称为callee   cleanup   
名字修饰:在函数名前加上下划线做前缀,名字后用@加上函数参数大小做后缀
注:WINAPI就是__stdcall的#define   
    
3、__fastcall   
压栈顺序:第一个参数放在ecx,第二个参数放在edx,其余从右至左   
清栈:callee   cleanup   
名字修饰:在函数名前加上@做前缀,名字后用@加上函数参数大小做后缀,如@foo@8   
注:名字叫fast实际就不一定了……   
    
4、thiscall   
压栈顺序:this指针(cpp非静态成员函数特有)放在ecx,其余从右至左   
清栈:callee   cleanup   
注:cpp非静态成员函数默认的调用约定   
    
5、naked   
压栈顺序:从右至左   
清栈:caller   cleanup   
注:VxDs用的调用约定,将__declspec(naked)写在函数定义处(注意,不是声明)

转载于:https://my.oschina.net/liujinofhome/blog/36548

你可能感兴趣的:(int WINAPI WinMain()函数)