windows核心编程—进程初步
来源:互联网 发布:战舰世界布琼尼数据 编辑:程序博客网 时间:2024/06/01 13:36
进程
- 什么是进程,系统如何创建一个内核对象来管理进程。
- 如何通过进程内核对象来操作一个进程。
- 进程的属性,以及查询和修改进程属性的函数。
- 进程的结束。
一个进程,就是一个正在运行的程序!一个程序,可以产生多个进程。
- 一个内核对象,被系统用来管理这个进程,这个内核对象中,还包含了进程的一些策略信息。
- 一个地址空间,这个地址空间中包含了可执行代码,动态链接库模块代码,数据,程序动态内存分配获取的内存,也在这个内存地址空间中。
进程是死的,进程必须有一个线程!!
primary thread!!如果进程内所有线程退出,那么进程自动销毁!
调用ExitProcess函数,也可以结束进程。
第一个windows程序CUI和GUI。
我们所编写的windows程序中,真正第一个被执行的函数是:
图像界面的入口函数是:_tWinMain,控制台程序的入口函数是_tmain
WinMainCRTStartup//GUI_ASCII字符类型的C运行时库中的入口函数
wWinMainCRTStartup// GUI_UNICODE字符类型的C运行时库中的入口函数
mainCRTStartup// CUI_ASCII字符类型的C运行时库中的入口函数
wmainCRTStartup// CUI_UNICODE字符类型的C运行时库中的入口函数
这些C运行时库函数,主要完成以下任务:
- 获取进程命令行指针;
- 获取进程环境变量指针;
- 初始化C/C++运行时库的全局变量,如果你包含了头Stdlib.h,那么你就可以访问这些变量!//errno这就是一个全局变量。_enrion这是环境变量指针
- 初始化malloc函数的内存堆;
- 为C++全局类,调用构造函数。
malloc 函数,不要轻易使用?因为这个函数一般来说,最终会调用windows API函数,我们直接调用virtualAlloc windowsAPI函数,效率会高!
Kenerl 调用XXXCRTStartup函数;
XXXCRTStartup函数调用main函数;
main函数退出;
exit函数被调用(真正调用的是crt0dat.c中的)
static void __cdecldoexit (
intcode,
intquick,
intretcaller
)
这个函数主要做以下事情:
- 调用_onexit函数注册的所有函数;
- 调用C++销毁函数销毁所有的全局和静态类对象;
- 如果_CRTDBG_LEAK_CHECK_DF标志被设置,那么调用CrtDumpMemoryLeaks函数,列出泄露内存。
- 调用ExitProcess函数,系统杀死当前进程!
获取当前操作系统版本信息:GetVersion函数
DWORDWINAPI GetVersion(void);
void main()
{
DWORD dwVersion =0;
DWORD dwMajorVersion =0;
DWORD dwMinorVersion =0;
DWORD dwBuild =0;
dwVersion = GetVersion();
printf("%0x\n",dwVersion);
// Get the Windows version.
//一个子就是WORD;
WORD Version=LOWORD(dwVersion);
//dwVersion中,其地位字,
dwMajorVersion = (DWORD)(LOBYTE(Version));
//Version字的低字节代表大版本号
dwMinorVersion = (DWORD)(HIBYTE(Version));
//Version字的高字节代表小版本号
// Get the build number.
if (dwVersion <0x80000000)
dwBuild = (DWORD)(HIWORD(dwVersion));
//dwVersion的高位字,表示build号。
printf("Version is %d.%d (%d)\n",
dwMajorVersion,
dwMinorVersion,
dwBuild);
getchar();
}
- windows核心编程—进程初步
- windows核心编程--进程
- windows核心编程--进程
- Windows核心编程:进程
- windows 核心编程(进程)
- 《Windows核心编程》进程
- Windows核心编程 - 进程
- windows核心编程-进程
- windows核心编程---进程
- 【Windows 核心编程】Windows 核心编程 -- 进程
- 《Windows核心编程》笔记——进程
- windows 核心编程——进程
- 《Windows核心编程》——四 进程
- Windows 核心编程之进程
- Windows核心编程有感-进程
- 《Windows核心编程》-初识进程
- 《Windows核心编程》之“进程”
- windows核心编程之进程
- 第十四周项目一——模板类
- 如何判断scanf()输入是int型、正整数
- win7笔记本将无线网通过有线方式分享给台式机
- Longge的问题 [Bzoj 2705,SDOI2012]
- 自定义圆形图片
- windows核心编程—进程初步
- Google Code Jam 2016 Round2
- 折线分割平面
- android 4.0引入的新布局GridLayout(网格布局)
- 进程创建
- Topcoder问题解答目录
- finalize()的调用
- Hive统计新增,日活和留存率
- Mac VMware fusion nat 外网映射