首页 > 代码库 > wvc_02_进程

wvc_02_进程

  进程的内容包括:

    1. 进程内核对象 ,对用户来说是进程句柄

    2. 进程运行环境: 如进程当前驱动器

  首先进程的定义是, 一个正在运行的程序的一个实例。

  进程由两部分组成:

    <1>进程内核对象,用于保存进程信息,操作系统用它来管理进程

    <2>一个地址空间,用于存放可执行文件或DLL模块的代码和数据, 以及动态分配的内存,线程的栈和堆。

  

  每个进程至少有一个线程, 当系统创建一个进程时,会自动为进程创建第一个线程,称为主线程。然后由主线程创建更多的线程。

  加载到进程地址空间的每一个可执行文件或者DLL文件都被赋予一个独一无二的实例句柄。可执行文件的实例句柄被当作WinMain函数的第一个参数 hInstance传入。 在需要加载资源的函数调用中,一般都要提供此句柄的值。

  HMODULE 和 HINSTANCE 完全是一回事, 如果某个函数的文档之处需要一个HMODULE参数,我们可以传入一个HINSTANCE,反之亦然。

  WinMain的hInstance参数的的值实际是一个内存基地址:系统将可执行文件的映像加载到进程地址空间中的这个位置。可执行文件的映像被加载到哪一个基地址,是由连接器决定的。

  可以使用 HMODULE GetModuleHandle(PCTSTR pszModule) 来返回一个句柄/基地址
pszModule是一个以0为终止的字符串,它指定在主调进程的地址空间中加载的一个可执行文件或DLL文件的名称。
若pszModule 参数为NULL, 则GetModuleHandle()将返回 主调进程的可执行文件的基地址。

  但GetModuleHandle(NULL)代码 若是在DLL中,返回值仍是可执行文件的基地址,而非DLL文件的基地址。

 

进程当前所在的驱动器和目录:

  如果不提供完整的路径名,各种windows函数会在当前驱动器的当前目录查找文件和目录。

wvc_02_进程