关于WIN32WINNT的含义
Windows中一些宏的含义
Windows中一些宏的含义1. _WIN32_WINDOWS,_WIN32_WINNT,WINVER这三个宏其实都是Windows的版本宏,在Windows 95,98,Me这一分支的OS 中,Windows的定义的版本宏是_WIN32_WINDOWS。
与此同时,Windows重新开发了NT系列,且其编号从NT4.0开始,经过Windows 2000,XP, Server 2003,Vista,Server2008,Win7,Win8. 在这一分支中,Windows的定义的版本宏是_WIN32_WINNT。
_WIN32_WINDOWS宏便被废弃了。
WINVER是_WIN32_WINDOWS或_WIN32_WINNT的别名。
在SDK的sdkddkver.h中有其定义,可见WINVER<=>_WIN32_WINNT宏的值。
#ifndef WINVER#ifdef _WIN32_WINNT// set WINVER based on _WIN32_WINNT#define WINVER _WIN32_WINNT#else#define WINVER 0x0601#endif#endif2. _WIN32_IEWindows IE浏览器的版本宏。
浏览器各个版本宏的值定义在sdkddkver.h中,#define _WIN32_IE_IE20 0x0200#define _WIN32_IE_IE30 0x0300#define _WIN32_IE_IE302 0x0302#define _WIN32_IE_IE40 0x0400#define _WIN32_IE_IE401 0x0401#define _WIN32_IE_IE50 0x0500#define _WIN32_IE_IE501 0x0501#define _WIN32_IE_IE55 0x0550#define _WIN32_IE_IE60 0x0600#define _WIN32_IE_IE60SP1 0x0601#define _WIN32_IE_IE60SP2 0x0603#define _WIN32_IE_IE70 0x0700#define _WIN32_IE_IE80 0x0800在sdkddkver.h中也可以看到,不同的Windows版本,所支持的IE浏览器版本是不同的。
电脑英语--著名软件篇
DOS:Disk Operating System,磁盘操作系统。
提到DOS,只要稍有电脑知识的人对它都会有所了解。
DOS 的主要功能是管理电脑的硬件和软件资源,方便用户对电脑进行操作。
使用DOS操作电脑,需要用户记住大量命令及其正确格式,比较难学。
Windows(微软视窗操作系统)的出现,标志着DOS时代的结束,图形操作电脑时代的到来。
Windows:在一般英文字典中查到Windows的意思为“窗户”。
Window指微软公司(Microsoft)著名的新一代电脑主流“视窗操作系统”。
它通过一些图形图标(Icon)、窗口(Window)和菜单(Menu)等的选择来实现对计算机的控制,极大地方便了用户。
Windows视窗操作系统系列产品有Windows 3.1、Windows 3.2、Windows 95(因为该产品是1995年出品,因而取名为Windows 95,也可写成Win95。
PWindows 95指中文版本的Windows 95),而功能更强大的最新产品为Windows 98和Windows 2000等。
Windows 95是目前最著名、最受欢迎的图形化操作系统之一。
Windows NT:微软公司的著名网络视窗操作系统。
NT是New Technology(新技术)的缩写。
OS/2 Warp:Operating System(操作系统)。
它是IBM推出的一个性能卓越的纯32位操作系统,同时它也能提供完善的DOS支持,在总体技术上比Windows 95更优越,是Windows 95的一个强有力的竞争对手。
OS/2 Warp中的Warp,英文含义为“弄弯;歪曲”,在这里指IBM为其新一代操作系统OS/2加入的别名。
Warp是美国著名的科幻电影《星球大战》中的科学怪人,把软件比喻为《星球大战》中的科学怪人,既给人以出其不意的感觉,又希望用户把对《星球大战》的美好记忆移到OS/2软件上来。
UNIX:一种多用户操作系统。
什么是Win32
什么是Win32Win32是指你现在所使用的操作系统是32位的windows环境.编辑本段Win32的重要意义从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。
理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易。
许多程序员从来没有学习过嵌入式系统领域著名的操作系统VxWorks,但是立马就能在上面做开发,大概要归功于平时在Win32多线程上下的功夫。
因此,学习Win32多线程不仅对理解Win32本身有重要意义,而且对学习和领会其它操作系统也有触类旁通的作用。
编辑本段进程与线程先阐述一下进程和线程的概念和区别,这是一个许多大学老师也讲不清楚的问题。
概念进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。
而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。
它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。
线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。
线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
二者关系线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。
线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。
Windows中32位(x86)和64位(x64)解释
Windows中32位(x86)和64位(x64)解释Windows XP、Windows vista、Windows Server 2008,以及处于测试阶段的windows7,都有32位(x86)和64位(x64)两种版本。
面对两种版本光盘镜像下载,常常让有些网友不知所措:究竟选择哪个版本更好一些?下面,我用最简洁的文字尽可能作最详尽的回答:两者之间存在的“五大不同”。
与此同时,着重说明Microsoft Windows64位(x64)操作系统,相对于32位(x86)操作系统的最大优势和劣势是什么?第一,设计初衷不同。
64位操作系统的设计初衷是:满足机械设计和分析、三维动画、视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户需求。
换句简明的话说就是:它们是高科技人员使用本行业特殊软件的运行平台。
而32位操作系统是为普通用户设计的。
第二,要求配置不同。
64位操作系统只能安装在64位电脑上(CPU必须是64位的)。
同时需要安装64位常用软件以发挥64位(x64)的最佳性能。
32位操作系统则可以安装在32位(32位CPU)或64位(64位CPU)电脑上。
当然,32位操作系统安装在64位电脑上,其硬件恰似“大马拉小车”:64位效能就会大打折扣。
第三,运算速度不同。
64位CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据(只要两个指令,一次提取8个字节的数据),比32位(需要四个指令,一次提取4个字节的数据)提高了一倍,理论上性能会相应提升1倍。
第四,寻址能力不同。
64位处理器的优势还体现在系统对内存的控制上。
由于地址使用的是特殊的整数,因此一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。
比如,Windows Vista x64 Edition支持多达128 GB的内存和多达16 TB的虚拟内存,而32位CPU和操作系统最大只可支持4G内存。
Windows NT
Windows NTMicrosoft Windows NT(Network Termination)是由微软公司发行的操作系统,基于OS/2 NT基础编制。
OS/2由微软和IBM联合研制,分为微软的Microsoft OS/2 NT与IBM的IBM OS/2。
协作后来不欢而散,IBM继续向市场提供先前的OS/2版本,微软则把自己的OS/2 NT的名称改为Windows NT,即第一代的Windows NT 3.1。
微软公司从数字设备公司(Digital Equipment Corporation)雇佣了一批人员来开发这个新系统。
这个系统的很多元素反映了早期带有VMS和RSX-11的DEC 概念。
Windows NT是纯32位操作系统,采用先进的NT核心技术。
NT即新技术 (New Technology)。
概述Windows NT是Microsoft推出的面向工作站、网络服务器和大型计算机的网络操作系统,也可做PC操作系统。
它与通信服务紧密集成,提供文件和打印服务,能运行客户机/服务器应用程序,内置了Internet/Intranet 功能。
特点①32位操作系统,多重引导功能,可与其它操作系统共存。
②实现了“抢先式”多任务和多线程操作。
③采用SMP(对称多处理)技术,支持多CPU系统。
④支持CISC(如Intel系统)和RISC(如Power PC、R4400等)多种硬件平台。
⑤可与各种网络操作系统实现互操作。
如:UNIX、Novel Netware、Macintosh等系统;对客户操作系统提供广泛支持,如MS-DOS、Windows、Windows NTWorkstation、UINX、OS/2、Macintosh等;支持多种协议:TCP/IP、NetBEUI、DLC、AppleTalk、NWLINK等。
⑥安全性达到美国国防部的C2标准。
NT系统价格低,应用服务能力强、安全性能高、内含软件丰富等特点是较为流行的网络操作系统。
Windows XP安装盘参数详解
Windows XP安装盘参数详解Windows XP系统安装盘的winnt32.exe可用参数winnt32.exe位于i386目录里面。
这个文件可以直接运行于windows下面,其具体参数有:安装或升级到 Windows XP。
在运行 Windows 95、Windows 98、Windows Me、WindowsNT、Windows 2000 或 Windows XP 的计算机上,可以从命令提示符中运行 winnt32。
语法:winnt32 [/checkupgradeonly] [/cmd:command_line][/cmdcons][/copydir:i386 older_name] [/copysource:folder_name][/debug[level]:[filename]] [/dudisable][/duprepare:pathname][/dushare:pathname] [/m:folder_name][/makelocalsource] [/noreboot][/s:sourcepath][/syspart:drive_letter][/tempdrive:drive_letter][/udf:id [,UDB_file]] [/unattend[num]:[answer_file]]参数:/checkupgradeonly检查计算机与 Windows XP 的升级兼容性。
如果在使用该选项时使用了/unattend,则不需要用户输入。
否则,结果将显示在屏幕上,并且可以用您指定的文件名保存它们。
默认的文件名为 Upgrade.txt(位于systemroot 文件夹)。
/cmd:command_line指示安装程序在执行最后阶段的安装前,运行一个特殊的命令。
这将在计算机重新启动两次并且“安装程序”收集了必要的配置信息后,以及“安装程序”结束之前发生。
/cmdcons在运行的计算机上将“故障恢复控制台”作为启动选项安装。
WinXPWin7Win10知道它们名字的由来吗?
WinXPWin7Win10知道它们名字的由来吗?Windows XPWndows 7Windows 10………等相信这些名字⼤家再熟悉不过了。
但你⼀定不知道它们名字的由来。
下⾯我来给⼤家讲讲。
随便也来说说操作系统的进化史~第⼀代系统-----Windows 1.0(1985年)微软原计划称为“界⾯管理器”(Interface Manager),但最终还是将其命名为“Windows”因为是第⼀个版本,所以就叫Windows 1.0第⼆代系统-----Windows 2.0(1987年)第⼆代操作系统直接是由版本号来直接命名的。
许多开发⼈员都是在这⼀平台上编写出了他们⽣平的第⼀款Windows应⽤程序。
第三代系统-----Windows 3.0(1990年)第三代操作系统也是直接是由版本号来直接命名的。
Windows NT,代码版本号为3.1(1993年)⾯向⼯作站、⽹络服务器和⼤型计算机的⽹络操作系统第四代系统-----Windows95(1995年)此版本在1995年推⼴发⾏,所以取名Windows95“开始按钮”和IE浏览器⾸次出现,并且取得了巨⼤的成功。
成为最功能的系统之⼀。
Windows98(1998年)与Win95版本命名的原理同样。
在互联⽹发展时期所推出的,也是“⾸款针对消费者所推出的系统”。
第五代系统-----Windows 2000(2000年)Windows 2000也是根据时间来命名的,它属于NT系列32位操作系统,早期别名WindowsNT5.0同样是⾯向⼯作站、⽹络服务器和⼤型计算机的⽹络操作系统。
Windows XP(2001年)“XP”的意思是英⽂中的“体验(Experience)”,是针对个⼈使⽤的操作系统。
XP系统最成功的地⽅是⼤⼤的降低了软件的兼容性问题。
第六代系统---Windows Vista(2005年)Windows Vista这个名字它选⾃“在⼀天结束的时候你个⼈的展望是什么”版本号正式步⼊6.0,也正因为这次的突破,导致了批量软件兼容性的问题,从⽽VISTA⾛向了衰败。
windowsserver200332位
Windows Server 2003 32位一、简介W i nd ow sS er ve r2003是由微软公司开发的服务器操作系统,于2003年4月24日正式发布。
本文将对其32位版本进行详细介绍。
二、功能特点2.1稳定性和可靠性-以Wi nd ow sN T内核为基础,提供稳定的运行环境。
-支持多用户和多进程,并实现对硬件的资源管理,保障系统的可靠性和稳定性。
2.2安全性-强大的安全性措施,如访问控制、加密和认证机制,可有效保护系统和数据的安全。
-基于角色的安全模型,允许管理员对用户进行细粒度的权限控制。
2.3网络和互联功能-支持本地网络、局域网和广域网的连接,并提供高效的网络通信。
-内置I nt er ne t信息服务(II S),可搭建强大的W eb服务器环境。
2.4数据库和应用程序支持-集成了Mi cr os of tS Q LS er ve r数据库,方便快捷地搭建和管理数据库环境。
-提供广泛的应用程序开发接口,支持各种编程语言和开发工具。
2.5管理性能和易用性-提供友好的图形化界面,简化了系统管理的操作流程。
-内置的管理工具,如A ct iv eD i r ec to ry、组策略和任务计划器,可帮助管理员高效地管理服务器。
三、硬件要求为了能够正常运行Wi n do ws Se rv er200332位,需要满足以下硬件要求:-处理器:至少为133M Hz的P en ti um微处理器或兼容处理器;-内存:至少为128MB(推荐256M B);-硬盘空间:至少为1.5G B的可用空间;-显示器:支持800×600像素分辨率的S VG A显示器。
四、安装步骤以下是在32位体系结构上安装W in do ws S er ve r2003的基本步骤:1.确保满足硬件要求,并备份重要数据。
2.使用适当的媒介引导计算机。
3.选择合适的安装选项,如语言、许可协议等。
4.创建分区并选择安装位置。
NTLDR-XP启动的秘密
提示:
用户也可以从系统属性里面关闭自动重启设置。不过要求在系统正常运行的情况下。方法是:
1、打开我的电脑——控制面板——系统属性
2、找到高级选项卡
3、点击“启动和故障恢复”下面的设置按钮
4、取消“自动重新启动”前面的复选框
5、点击确定两次
1、当打开电脑,系统提示"NTLDR is missing,Press any key to restart".重启按F8 进入不了安全模式。
方法:把Winxp安装光盘放光驱,用光驱引导系统,当提示“要用恢复控制台修复Windows xp安装,按“R”继续。当提示进入修复系统时,按“1”键并输入管理员密码进入了“故障恢复台”,在命令行输入copy G:\i386\ntldr C:\(G是光盘符)回车,重启。
会收集如下类型的硬件信息:
& 系统固件信息,例如时间和日期等
& 总线适配器的类型
& 显卡适配器的类型
& 键盘
& 通信端口
& 磁盘
& 软盘
& 输入设备,例如鼠标
& 并口
& 安装在ISA槽中的ISA设备
完成信息的检测之后,Windows XP会在屏幕上显示那个著名的Windows XP商标,并显示一个滚动的
2、如果是NTLDR文件被破坏,先用attrib c:\ntldr -s -h -r取消其系统只读,隐藏的文件属性,然后再使用复制命令覆盖原来的文件。
查看NTLDR,在资源管理器中单击“工具”菜单中的“文件夹选项"在"查看"选项卡中取消"隐藏受保护的操作系统文件".并选中下面的"显示所有的文件和文件夹"选项才能看到这些文件。
32位_精品文档
32位32位是指计算机系统中使用32位寄存器进行操作和处理数据的架构。
在计算机领域,位指的是一个二进制数中的一个单元。
在32位架构中,每个寄存器可以容纳32位的二进制数,因此可以进行32位的操作和计算。
32位架构的计算机系统广泛应用于个人电脑、服务器和嵌入式设备等领域。
相比于16位架构,32位架构在寄存器的位数上有了显著的提升,可以进行更复杂的运算和处理更大的数据。
首先,32位架构在处理能力方面有明显的优势。
由于寄存器的位数增加,32位架构可以同时处理更多的数据,提高了计算效率。
尤其对于复杂的应用程序和大规模的数据处理来说,32位架构能够更好地满足需求。
例如,在数据密集型的科学计算、图形渲染和多媒体处理方面,32位架构可以提供更快速和高效的计算能力。
其次,32位架构具有更大的内存寻址能力。
由于寄存器的位数增加,32位架构可以对更大的内存地址进行定位和访问。
这使得32位架构在处理大容量数据时更为有效,并且可以支持更大的应用程序和操作系统。
除了处理能力和内存寻址能力的提升,32位架构还具有更多的寄存器可用于存储变量和中间结果。
这使得程序可以更高效地进行计算和数据操作,减少了对内存的频繁访问。
同时,更多的寄存器也减少了对内存传输数据的次数,提高了计算机系统的整体性能。
另外,32位架构还具有更好的兼容性和可移植性。
相比于16位架构,32位架构能够更好地支持多种操作系统和应用程序。
这使得软件开发人员可以在不同的计算机平台上进行开发和部署,提高了软件的可移植性和可扩展性。
然而,随着计算机技术的发展和需求的增长,32位架构也逐渐受到了限制。
由于寄存器位数的限制,32位架构无法支持超过4GB的内存地址空间。
随着应用程序和操作系统对内存需求的不断增加,这成为了32位架构的一个短板。
因此,随着时间的推移,64位架构逐渐取代了32位架构成为了主流。
总结起来,32位架构是计算机系统中使用32位寄存器进行操作和处理数据的架构。
计算机英语名词简释
计算机英语名词简释一著名计算机公司Microsoft: 有时缩略为MS,是全球最著名的软件商,美国软件巨头微软公司的名字。
Microsoft其实是由两个英语单词组成:Micro意为“微小”,Soft意为“软的”,此处应为“Software,软件”,顾名思义,微软(Microsoft)是专门生产软件的公司。
当今90%以上的微机都是装载Microsoft的操作系统,如MS-DOS 6.22、Windows 3.2、Windows 95、Windows NT等。
Intel:英特尔公司,是世界上最大的CPU(中央处理器,被人们称为电脑的心脏)及相关芯片制造商。
80%左右的电脑都是使用Intel公司生产的CPU。
其产品从早期的8088到目前流行的Pentium、Pentium Pro、Pentium MMX、Pentium Ⅱ等。
Pentium、Pentium Pro、Intel Inside标志:都是英特尔公司的注册商标。
Pentium(读音为/′pentjm/)是著名的CPU商标名,汉译为“奔腾”。
人们称赞不已、开口闭口所说的“奔腾”电脑,是因为电脑里安装有英特尔公司生产的“奔腾”CPU。
AMD:世界第二大CPU制造商,主要产品有K5,K6 MMX CPU系列。
Cyrix:CPU制造商,主要产品有M1,M2 MMX CPU系列。
Epson:爱普生,日本爱普生打印机制造商。
HP:惠普,Hewlett Packard的缩写,是美国著名的惠普打印机、电脑制造商。
Canon:佳能,著名打印机商标。
日本著名的佳能打印机制造商。
Canon英文意思为“宗教法规,标准”,可以看出佳能公司在创业之初,就决心要把自己的产品作为业界的“标准”。
Compaq:汉译为“康柏”,美国康柏电脑公司,它是世界上最大的电脑公司之一。
IBM:是International Business Machine Company(美国国际商用机器公司)的缩写。
Windows下由“_WIN32_WINNT”导致的编译问题解决
Windows下由“_WIN32_WINNT”导致的编译问题解决情景:编译中遇到错误:“DEVICE_NOTIFY_ALL_INTERFACE_CLASSES”没定义,找到定义它的源发现内容如下,灰⾊说明当前的_WIN32_WINNT值⼩于0x0501,0x0501代表WinXP,⽽当前系统明明是Win7:#if(_WIN32_WINNT >= 0x0501)#define DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 0x00000004#endif查找到原因:"The value of _WIN32_WINNT indicates the version of the Win32 API you're compiling against",即使⽤哪个版本的Win32 API库编译当前程序,也即编译出的程序可以在哪个版本的Windows下运⾏。
与当前系统版本没有关系。
解决:找到_WIN32_WINNT的定义或者⼿动定义其值即可。
找到定义:包含头⽂件#include < SDKDDKVer.h >,此时_WIN32_WINNT的值将是当前系统⽀持的最⾼版本值。
⼿动定义:参考如下列表。
#define _WIN32_WINNT_NT4 0x0400#define _WIN32_WINNT_WIN2K 0x0500#define _WIN32_WINNT_WINXP 0x0501#define _WIN32_WINNT_WS03 0x0502#define _WIN32_WINNT_WIN6 0x0600#define _WIN32_WINNT_VISTA 0x0600#define _WIN32_WINNT_WS08 0x0600#define _WIN32_WINNT_LONGHORN 0x0600#define _WIN32_WINNT_WIN7 0x0601#define _WIN32_WINNT _WIN32_WINNT_WINXP。
Windwos操作系统知识概述
Windwos操作系统知识概述作为世界上最流行的操作系统,Windows可不是从一开始就是这样的。
Windows的进化过程经常是不确定与不稳固的。
其成功是与处理器速度、内容容量等息息有关的,微软也非常依靠第三方的软件来填补概念与消费者之间的鸿沟。
随着Vista的发售,有必要通过截屏回顾一下23年来,Windows操作系统所走过的路。
Windows 1.0比尔·盖茨于1983年正式宣布推出Windows系统,但是微软的第一个图形用户界面操作系统Windows 1.0,却直到1985年11月才放出,如今距离苹果推出Mac已经有两年之久了。
由于涉及到与苹果的版权问题,如今的Windows系统还不能拥有比如重叠窗口与回收站的功能。
Windows 1.0更多的是一个MS-DOS的扩展,而不是一个单独的操作系统,只是已经能够支持有限的多任务与鼠标操作了。
Windows 2.0盖茨很快与苹果签订了授权协议,以便在Windows中使用Macintosh GUI的某些原素。
只是随后,苹果将盖茨送上了法庭,称在新推出的Windows 2.0中,有170处涉嫌抄袭。
Windows 2.0提供了图标与层叠窗口的功能。
另外,Windows 2.0还得到了一些关键的程序支持。
早期版本的Word与Excel使用Windows作为界面;当时流行的桌面公布程序Aldus PageMaker,一度只在Mac电脑上运行,同样也进驻了Windows 2.0,这对Windows来说是一个关键的事件,由于这极大的扩展了系统的有用性与市场份额。
Windows 3.0这一版的Windows于1990年公布,能够说是一次彻头彻尾的改进。
新的文件管理系统与增强的图形性能,终于使Windows PC变成了Mac的强劲对手,而这一过程花了六年的时间。
操作系统拥有全新的外观,受保护的与增强的操作模式使得内存管理更为有效。
Windows 3.0取得了巨大的成功,在两年的时间里销售了超过1000万的拷贝。
关于_WIN32_WINNT的含义
关于_WIN32_WINNT的含义从 Visual C++ 2008 开始,Visual C++ 不⽀持⾯向 Windows 95、Windows 98、Windows ME 或 Windows NT。
如果您的WINVER 或 _WIN32_WINNT 宏被指定到这些 Windows 版本之⼀,则需要修改宏。
当升级从 Visual C++ 的以前版本创建的项⽬时,如果将 WINVER 或 _WIN32_WINNT 宏指定到不再受⽀持的 Windows 版本,可能会看到与这些宏相关的编译错误。
若要修改宏,请在头⽂件中添加以下⾏:#define WINVER 0x0500#define _WIN32_WINNT 0x0500这将以 Windows 2000 操作系统为⽬标。
其他有效值包括 0x0501(⽤于 Windows XP)、0x0502(⽤于 Windows Server 2003)和 0x0600(⽤于 Windows Vista)。
需要你⾃已在stdafx.h头⽂件中定义。
编译器根据此宏来确定windows的版本,如果你需要使⽤⾼版本的WIN32函数,只有你定义了此宏后才能使⽤Windows XP _WIN32_WINNT>=0x0501Windows 2000 _WIN32_WINNT>=0x0500Windows NT 4.0 _WIN32_WINNT>=0x0400Windows Me _WIN32_WINDOWS=0x0490Windows 98 _WIN32_WINDOWS>=0x0410Internet Explorer 6.0 _WIN32_IE>=0x0600Internet Explorer 5.01, 5.5 _WIN32_IE>=0x0501Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE>=0x0500Internet Explorer 4.01 _WIN32_IE>=0x0401Internet Explorer 4.0 _WIN32_IE>=0x0400Internet Explorer 3.0, 3.01, 3.02 _WIN32_IE>=0x0300。
关于_WIN32_WINNT的含义
。
这篇文章告诉我们有两个关键的宏定义,它们的取值所表达的意思就是系统版本号。头文件中就是使用该值来包含
对应系统版本的 API 函数头的。 比如我们要使用 SetLayeredWindowAttributes()
,该 API 被声明在 WinUser.h 文件中, 打开该文件, 我们
会发现在它后面有 /* _WIN32_WINNT
可以看到一
篇文章: Using the Windows Headers
;你也可以这样打开它: 切换到 Contents 标签页: Development Guides
-> Windows API -> Window API Reference -> Using the Windows Headers
需要你自已在 stdafx.h 头文件中定义。编译器根据此宏来确定 高版本的 WIN32 函数 ,只有你定义了此宏后才能使用
windows 的版本, 如果你需要使用
Windows XP
_WIN32_WINNT >=0x0501
Windows 2000
_WIN32_WINNT >=0x0500
Windows NT 4.0
MessageBox(buffer1, buffer2, MB_OK);
SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE) ^ WS_EX_LAYERED);
SetLayeredWindowAttributes(this->GetSafeHwnd(), 0, 127, LWA_ALPHA); 编译不能通过,这是为什么呢?
网络操作系统与Windows NT简介
网络操作系统(Windows NT 、NetWare NDS 简介)1.1 介绍网络操作系统的出现是计算机世界的里程碑。
对于最终用户,它意味着独自工作的结束。
使用另一个工作站并不意味着必须将文件从一个工作站拷贝到另一个工作站,或将文件拷回。
当然,这只是网络环境的一个优点。
这一阶段中,你将学习操作系统以及网络操作系统的典型组件和服务。
1.2 什么是操作系统?你是否曾经想过究竟是什么使你的计算机运转的?计算机是如何执行多种功能的?所有这些都是通过计算机系统最重要的组件——操作系统,来完成的。
定义:―操作系统是一个程序,它担当着用户和计算机硬件间的接口,并控制各种类型程序的执行。
‖计算机系统可粗略地划分成下列组件:硬件 —— 它提供了基本运算资源。
它由中央处理器 (CPU) 、内存和输入/输出 (I/O) 设备组成。
应用程序 —— 它们是软件,定义了用户使用计算机资源的方式。
应用程序可是编译器、解释器、数据库系统、财会软件包,甚至我们喜欢玩的计算机游戏也是应用程序。
用户 —— 用户可以是人,也可以是另一台计算机。
操作系统 —— 这是重要组件,它为各种用户协调处理应用程序使用硬件资源的方式。
也就是说,操作系统提供了用户和计算机组件间的接口。
图1是操作系统功能示例。
图 1. 操作系统用户软盘 硬盘 存储设备输出设备 打印机 / 监视器 操作系统内存 控制单元 / ALU 中央处理器 输入设备 键盘1.3 操作系统的分类许多操作系统得到很大发展,并简化了用户和计算机间的交互。
操作系统可被分为:单用户系统计算机的处理器每次只能处理一项任务的时候,被称为单用户系统。
这意味着在任一时间点,系统只能支持一个用户。
单用户系统有一个CPU 和一套I/O 设备。
因为每次只支持一个用户,所以只有特定的任务或程序能装入内存执行。
单用户操作系统中最通用的是微软磁盘操作系统,或称MS-DOS 。
多用户系统在多用户系统中,不止一个用户可运行在系统上,而且每个可以运行在不同的程序和数据集上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于_WIN32_WINNT的含义(2011-02-28 14:41:44)转载从Visual C++ 2008 开始,Visual C++ 不支持面向Windows 95、Windows 98、Windows ME 或Windows NT。
如果您的WINVER或_WIN32_WINNT宏被指定到这些Windows 版本之一,则需要修改宏。
当升级从Visual C++ 的以前版本创建的项目时,如果将WINVER或_WIN32_WINNT宏指定到不再受支持的Windows 版本,可能会看到与这些宏相关的编译错误。
若要修改宏,请在头文件中添加以下行:#define WINVER 0x0500 #define _WIN32_WINNT0x0500这将以Windows 2000 操作系统为目标。
其他有效值包括0x0501(用于Windows XP)、0x0502(用于Windows Server 2003)和0x0600(用于Windows Vista)。
需要你自已在stdafx.h头文件中定义。
编译器根据此宏来确定windows的版本,如果你需要使用高版本的WIN32函数,只有你定义了此宏后才能使用Windows XP _WIN32_WINNT>=0x0501Windows 2000 _WIN32_WINNT>=0x0500Windows NT 4.0 _WIN32_WINNT>=0x0400Windows Me _WIN32_WINDOWS=0x0490Windows 98 _WIN32_WINDOWS>=0x0410Internet Explorer 6.0 _WIN32_IE>=0x0600Internet Explorer 5.01, 5.5 _WIN32_IE>=0x0501Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE>=0x0500Internet Explorer 4.01 _WIN32_IE>=0x0401Internet Explorer 4.0 _WIN32_IE>=0x0400Internet Explorer 3.0, 3.01, 3.02 _WIN32_IE>=0x0300VC6 使用基础◆一、VC6 + XPSP2 SDK 使用方法:当我们在VC6 中写这样的代码:CString buffer1,buffer2;buffer1.Format("_WIN32_WINNT=%x", _WIN32_WINNT);buffer2.Format("WINVER=%x", WINVER);MessageBox(buffer1, buffer2, MB_OK);SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE) ^WS_EX_LAYERED);SetLayeredWindowAttributes(this->GetSafeHwnd(), 0, 127, LWA_ALPHA);编译不能通过,这是为什么呢?VC6 是98 年出来的,对Win2k 系统上才有的API 无法直接调用。
虽然我们可以动态调用DLL 的方式来使用它的API,但是这样很不方便。
升级SDK 可以解决以上问题,目前所知,仅有两个版本支持VC6,一个是Server2003 SDK,另一个就是XPSP2 SDK ,可以查阅我前面写的Microsoft Platform SDK 的文章,里面有它们的下载地址。
我在XP 系统上使用VC,所以这里下载XPSP2 SDK 。
SDK 安装完成后,在“开始菜单\程序\Microsoft Platform SDK for Windows XP SP2\Visual Studio Registration\” 里可以找到Register PSDK Directories with Visual Studio 项,它能将SDK 中的头文件和库文件目录配置到VC6 的头文件和库文件搜索目录项中。
但是,这样做完后还不能使VC 直接调用Win2k API。
这是因为目前在SDK 里,头文件中使用_WIN32_WINNT来标识可使用的API 函数集。
它的取值不同,可使用的API 函数范围也不同。
我们在Platform SDK for Windows XP SP2 帮助中的Index 标签页中输入_WIN32_WINNT可以看到一篇文章:Using the Windows Headers ;你也可以这样打开它:切换到Contents 标签页:Development Guides -> Windows API -> Window API Reference -> Using the Windows Headers 。
这篇文章告诉我们有两个关键的宏定义,它们的取值所表达的意思就是系统版本号。
头文件中就是使用该值来包含对应系统版本的API 函数头的。
比如我们要使用SetLayeredWindowAttributes() ,该API 被声明在WinUser.h 文件中,打开该文件,我们会发现在它后面有/* _WIN32_WINNT >= 0x0500 */ 注释,即如果我们定义_WIN32_WINNT >= 0x0500,就可以使用该函数。
而0x0500 正是指的Win2k,所以该函数在Win2k 及以上版本中才存在,这就是版本控制。
为了保证VC6 和SDK 的兼容性,我们取的API 函数集应该限制在Win2k 系统里,即要这样定义:#define WINVER 0x0500#define _WIN32_WINNT 0x0500哦,想必大家已经看出来了,是的,_WIN32_WINNT定义没有写在Windows.h 中,就是要让用户自己指定所使用的API 函数集范围。
但是如果没有定义WINVER,则在Windows.h 中它会这么做#define WINVER 0x0501 而在WinUser.h 中它会这么做#define WINVER 0x0500 /* version 5.0 */故,我们最好先定义一下它们,使API 和常量定义的使用范围更明确些。
最好的方案是在程序引用Windows.h 之前定义它们,但是对于MFC 程序,我们很难找到定义处,因为类封装了它。
怎么办呢?我在这里提供两个可选方法:▲方法一:在编译预处理中指定新建工程,点主菜单,Project -> Settings 打开Project Settings 对话框。
或者按ALT + F7 直接打开该对话框。
找到C/C++ 标签页,在Category: 下拉菜单中选择General,可看到底下Preprocessor definitions: 编辑框,在里面填入_WIN32_WINNT=0x0500 每个预处理标识符都是用逗号分隔的。
当你这么填入后点确定,它会在下面的Project Options: 框里加上/D WIN32_WINNT=0x0500 选项。
它相当于下面这条语句:#define _WIN32_WINNT 0x0500其实我们应该定义两个,#define WINVER0x0500#define _WIN32_WINNT 0x0500只不过我们在这里指定WINVER 会发生重复,编译器会报错。
查看Windows.h 头文件,发现有WINVER 定义。
所以编译器是先处理文件,当找不到相应常量时才会使用在编译器中指定的。
虽然这里我们不加上/D WINVER=0x0500,在该XPSP2 SDK 中会自动在Windows.h 中定义#define WINVER 0x0501 ,程序依然可以使用Win2k API,但是如果不小心使用了XP 的API,可能会造成不兼容的问题,比如程序可以编译但不能连接,或者编译连接正常,但运行会出错等,这些问题就不太好查了。
所以,我建议,两个都要先定义。
怎么才能做到呢?请看下面的方法:▲方法二:修改Windows.h 文件法我想你也注意到了,既然_WIN32_WINNT是没有定义的符号,我们就在Windows.h 中将它加上好了。
如果你的源程序不需要拿到其它环境里去编译,完全可以这么做。
如果你确定要这么干,这里我有个更好的做法,不改变原Windows.h,而是复制一份到另一个目录里,然后修改这个副本,在文件开头添加#define WINVER0x0500#define _WIN32_WINNT 0x0500然后我们再到VC 集成环境中,选Tools -> Options,打开Options 对话框,找到Directories 标签页,在Show directories for: 下拉列表中选择include files,在里面添加副本所在目录,比如c:\win2k.inc,并将其移到最上面,这样无论编译什么,就算是MFC 工程,一样可以使用Win2k API 。
◆二、VC 中新建的工程第一次应该使用Rebuild All 。
在VC中,新建立的工程第一次编译,应该使用主菜单中的Build -> Rebuild All这是因为VC 有时候不重新编译一些公共文件,造成编译连接错误。
本来VC 是为了加速编译速度,不对公共文件重新编译,但有时新建了工程,它也不重新编译,还用先前那个,这就会造成编译连接错误。
为了不必要的麻烦,在一开始将所有的文件全部Rebuild All 一次。
注意,在菜单Build 中,Rebuild All 的图标带三个小箭头,而Build 旁边没有图标,但是在Build MiniBar 工具条上的Build 是带二个小箭头的图标,注意分清楚。
以前我使用VC 时,就误解了Build MiniBar 上的图标和Rebuild All 的图标,就是因为在主菜单Build 中没有标出Build 的二箭头图标,害得我好几次出了问题不知所云。
如果不清楚,最好直接使用主菜单。
◆三、在VC 中,让调试器带上符号调试在主菜单中选Tools -> Options,在Debug 标签页中,将Disassembly window 中的Symbols 勾上。
为了在VC 调试器中用符号代替变量地址,我们还需要把代码用一个大括号括起来,并且使用的变量都要是在这个大括号里面定义的,才会出现带符号调试。
如:void main(){{int a, b, c;a = b = c = 1;a = a + b + c;cout << "a= " << a << endl;}}。