Win32是指Microsoft Windows *** 作系统的32位环境,与Win64 都为Windows常见环境。如今的Win32 *** 作系统可以一边听音乐,一边编程,一边打印文档。Win32 *** 作系统是一个典型的多线程 *** 作系统。
从单线程到多进程是 *** 作系统发展的一种必然趋势,当年的DOS系统属于单任务 *** 作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32 *** 作系统却可以一边听音乐,一边编程,一边打印文档。
环境介绍:
在内存管理方式上,Dos汇编和Win32汇编也有很多的不同:Dos工作在实模式下,我们可以寻址1M的内存,寻址时通过段寄存器来制定段的初始地址,每个段的大小为64K,超过1M的部分,就只能把他作为XMS使用,也就是说,只能用作数据存放使用而无法在其中执行程序。
而Windows在保护模式下执行,这里所有的资源对应用程序来说都是被“保护”的:程序在执行中有级别之分,只有 *** 作系统工作在最高级0级中,所有应用程序都工作在3级中(Ring3),在Ring3中,无法直接访问IO端口,无法访问其他程序运行的内存,连向程序自己的代码段写入数据都是非法的,会在Windows的屏幕上冒出一个熟悉的蓝屏幕来。只有对Ring0的程序来说,系统才是全开放的。
以上内容参考:百度百科-win32
1.打开Vs2013。选择 File ->New ->Project。
2.依次选择Visual C++ ->Win32 ->Win32 Project,输入工程名为“FirstWin32Project”(可以自定义),点击“OK”按钮。
3.点击“OK”按钮后,第一个显示的是向导说明信息,我们不用管,点击“next”下一步。
4.然后显示的是程序设置。按照如图所示,这里选择“Windows application”,其它的默认就好了。点击“Finish”。
5.至此,一个工程源文件就生成好了。
#include "stdafx.h"#include <windows.h>
int main(int argc, char* argv[])
{
HANDLE hFile=::CreateFile("test.txt",
GENERIC_ALL,//文件 *** 作方式,读写删都可
0,//此标示无法再创建test.txt文件,必须关闭句柄才可
NULL,//一般高级文件 *** 作用
OPEN_ALWAYS,//有文件就打开,没文件就创建
FILE_ATTRIBUTE_NORMAL,//其它标示将会覆写此标示
NULL)//基本不用,再me/98系统下.必须是null
if(hFile==INVALID_HANDLE_VALUE){
printf("error\n")
}else{
const char* cBuffer="hello world"
DWORD dwLenght=strlen(cBuffer)
DWORD dwNumOfWrite
DWORD dwPos
dwPos = SetFilePointer(hFile, 0, NULL, FILE_END)//这样可以继续接写文件,而不是复写
WriteFile(hFile,
cBuffer,
dwLenght, //写入字数
&dwNumOfWrite,//实际写入字数
NULL)
::CloseHandle(hFile)
printf("success\n")
}
return 0
}
注意:我个人不推荐直接 *** 作win api,因为除非你是非常资深技术人员,可以考虑到线程之间的影响以及 兼容性,要不然就不要直接使用api,而是使用c运行库,例如fopen,fwrite等
有错请纠正~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)