windows进程


1.      windows进程启动过程wWinMainCRTStartup()->__tmainCRTStartup()->wWinMain(),注意:wWinMainCRTStartup作用:

<1>检索指向新进程的完整命令行的指针

<2> 检索指向新进程的环境变量的指针

<3>对C / C + +运行期的全局变量进行初始化。如果包含了S t d L i b . h 文件,代码就能访问这些变量

<4>对C 运行期内存单元分配函数(ma l l o c 和ca l l o c )和其他低层输入/输出例程使用的堆进行初始化

<5>为所有全局和静态C + +类对象调用构造函数

 

2.      进程命令行: __argc表示命令行参数个数,__wargv指向命令行字符串指针数组。对于_tWinMain函数来说,wWinMainCRTStartup已经解析好命令行,把exe文件路径已经去解析,lpCmdLine 指向剩于部分的命令行, 命令行字符串以 空格作为分割符

3.      进程4GB地址空间,低2GB用户空间,高2GB内核空间。

4.      进程环境变量,形式如下

 Var1=Value1\0

Var2=Value2\0

Var3=Value3\0

...

VarN=ValueN\0\0

解析环境变量

5.      进程终止时候会干什么?

6.      UAC权限控制(vista,win7上面大量存在, 项目中应该把uac问题放在比较重要的地位)

<1>应用程序提权包括手动提权和自动提权。

<2>用户界面权限隔离(UIPI),在vista和win7上面低权限的应用程序无法给高权限的应用程序发送消息,解决方案:ChangeWindowMessageFilter。

7.      IPC通信机制:

<1>命令行、环境变量.适用场合:CreateProcess、ShellExecute、ShellExecuteEx来启动其余进程来传递信息,一般是进程初始化时候。

<2>mutex、Semaphore、Event。通过创建时以名字创建来进行进程间通信。

<3>WM_COPYDATA:小数据量且对通信效率要求不高。优点:简单易用。缺点:

通信效率不够,只能用SendMessage,不能用PostMessage或者PostThreadMessage,任何使用SendMessage将造成的问题在这里可能都会出现。

<4>Socket:主要用于网络通讯套接字开发。

<5> 管道,邮件槽:网络服务器开发。

<6>剪贴板,常用的复制,粘贴功能的实现。

<7>FileMapping(共享内存):最高效的通信方式,适用处理大数据量的通信。Windows上所有的IPC通信机制都是基于FileMapping来实现的。

 

参考资料:windows 核心编程第四章进程

         Windows 核心编程第13章widnows内存体系结构

         Windows核心编程第9章线程与内核对象的同步

Windows多线程程序设计第13章进程之间的通讯

          

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows编程是指在Windows操作系统上进行软件开的过程。它涵盖了各种应用程序的开发,包括桌面应用程序、游戏、设备驱动程序等。下面是Windows编程的些重要概念和技术: 1. Windows API:Windows API(Application Programming Interface)是一组函数和数据结构,用于与Windows操作系统进行交互。开发者可以使用Windows API来创建窗口、处理用户输入、绘制图形等。 2. 编程语言:Windows编程可以使用多种编程语言进行,如C++、C#、VB.NET等。其中,C++是最常用的语言之一,因为它提供了对Windows API的直接访问。 3. 窗口和消息循环:在Windows编程中,窗口是用户界面的基本元素。开发者可以使用Windows API创建和管理窗口,并通过消息循环处理用户输入和系统事件。 4. 图形界面库:为了简化Windows编程,许多图形界面库被开发出来,如MFC(Microsoft Foundation Classes)、WinForms、WPF(Windows Presentation Foundation)等。这些库提供了更高级的抽象和封装,使开发者能够更快速地创建用户界面。 5. 数据持久化:在Windows编程中,通常需要将数据保存到文件或数据库中。开发者可以使用各种数据库技术(如SQL Server、MySQL)或文件操作API(如Windows API的文件操作函数)来实现数据持久化。 6. 多线程编程:为了提高程序的性能和响应能力,Windows编程中常常使用多线程。开发者可以使用线程相关的API来创建和管理线程,并实现并发执行的功能。 7. 调试和测试:在Windows编程中,调试和测试是非常重要的环节。开发者可以使用各种调试工具(如Visual Studio)来定位和修复程序中的错误,并使用单元测试和集成测试来验证程序的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值