Windows编程(一)句柄、进程、线程
句柄是指向指针的指针。
句柄地址(稳定)→记载着对象在内存中的地址────→对象在内存中的地址(不稳定)→实际对象
程序启动--->_tWinMain(hInstance, hPrevInstance, lpCmdLine, nShowCmd)
启动代码调用Win32 API,获取hInstance,lpCmdLine,nCmdShow 3个参数,
然后调用_tWinMain,即 WinMain 或者 wWinMain
hPrevInstance 这个参数是Win16 的遗留参数,用来判断,同一程序的另一个实例,是否已经启动。现在已经没用了,缺省设置为NULL。
lpCmdLine 是命令行参数
nCmdShow 是窗体显示方式。
hInstance 是实例句柄,实际上通常,这个是程序的启动地址。大概是0x400000 即 4M 的位置,4M 以下是系统保留的------用于捕获空指针异常的。因为 Win32 每个进程,有自己的地址空间,所以,几乎都是从同一地址启动的。
Windows进程
在Windows中进程是装入内存并执行的程序(exe...),每个进程都有独立的虚拟地址空间,本质是虚拟地址空间加各种资源、线程等的载体或容器,是不活动的。
每个进程都由单线程(主线程)开始。
Windows线程
是可以被执行的最小调度单位。
进程中所有线程共享虚拟地址空间并能访问全局变量和该进程的系统资源。
GetCurrentProcess //得到进程句柄
GetCurrentThread //得到线程句柄
DuplicateHandle //传递或跨线程操作,复制句柄后再做操作
无符号32位值唯一标识一个进程或线程,被称为进程或线程的ID
GetCurrentProcessID
GetCurrentThreadID