句柄是指向指針的指針。
句柄地址(穩定)→記載着對象在內存中的地址────→對象在內存中的地址(不穩定)→實際對象
程序啟動--->_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