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章进程之间的通讯

          

你可能感兴趣的:(windows进程)