win32编程详解
表4-1 应用程序的进入点
应用程序类型 | 进入点 | 嵌入可执行文件的启动函数 |
需要ANSI字符和字符串的GUI应用程序 | WinMain | WinMainCRTStartup |
需要Unicode字符和字符串的GUI应用程序 | wWinMainw | WinMainCRTStartup |
需要ANSI字符和字符串的CUI应用程序 | main | mainCRTStartup |
需要Unicode字符和字符串的CUI应用程序 | wmain | wmainCRTStartup |
可以从应用程序中全部删除/ S U B S Y S T E M 链接程序开关。当这样做的时候,链接程序能够自动确定应 用程序应该连接到哪个子系统。当进行链接时,链接程序要查看代码中存在4 个函数(Wi n M a i n 、w Wi n M a i n 、m a i n 或w m a i n ) 中的哪一个。然后确定可执行程序应该是哪一个子系统,并且确定可执行程序中应该嵌入哪个C / C + +启动函数。
程序能够使用的C / C + +运行期全局变量
变量名 | 类型 | 说明 |
_osver | unsigned int | 操作系统的测试版本。例如Windows 2000 Beta 3是测试版本2031 。因此_osver的值是2031 |
_winmajor | unsigned int | 采用十六进制表示法的Windows主要版本。对于Windows2000来说,它的值是5 |
_winminor | unsigned int | 采用十六进制表示法的Windows次要版本。对于Windows2000来说,它的值是0 |
_winver | unsigned int | ( _winmajor < < 8 ) + _ winminor在命令行上传递的参数号 |
__argc | unsigned int | 带有指向ANSI/Unicode字符串的指针的__argc大小的数组 |
__argv | char * * | 带有指向ANSI/Unicode字符串的指针的__argc大小的数组 |
__wargv | wchar_t * * | 每个数组项均指向一个命令行参数 |
_environ | char * * | 指向ANSI/Unicode字符串的指针的数组。每个数组项指向一个环境字符串 |
_wenviron | wchar_t * * | 指向ANSI/Unicode字符串的指针的数组。每个数组项指向一个环境字符串 |
_pgmptr | char * | 正在运行的程序的ANSI/Unicode全路径和名字 |
_wpgmptr | wchar_t * | 正在运行的程序的ANSI/Unicode全路径和名字 |
可执行文件的映像加载到的基地址是由链接程序决定的。不同的链接程序可以使用不同的默认基地址。Visual C++链接程序使用的默认基地址是0 x 0 0 4 0 0 0 0 0 ,因为这是在运行Wi n d o w s9 8 时可执行文件的映象可以加载到的最低地址。可以改变应用程序加载到的基地址,方法是使用M i c r o s o f t 的链接程序中的/ B A S E : a d d r e s s 链接程序开关。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!