進程句柄和進程ID的區別和關系


進程和進程句柄和進程id含義

進程是一個正在運行的程序,進程里可以包括多個模塊(DLL,OCX,等)
進程句柄是程序訪問時用到的東西,當前進程句柄等於主模塊的句柄,當你使用OpenProcess時的進程句柄是不等於那個句柄的,使用完了還要關閉那個句柄
進程ID是在系統中的標識,一個進程可以有多個句柄但是ID就只有一個,可以通過ID打開多個句柄


進程是內核對象,其ID是一個32位的無符號整數,用於在整個系統中唯一地標志該對象;你在任何進程中都可使用該ID號訪問進程對象;
進程的句柄則是基於特定進程的,對於同一個進程對象,在不同的進程中可能有不同的句柄值。因為句柄實際上是進程空間中的句柄表的偏移,由於在不同的進程空間中句柄表是不同的,針對相同的對象在句柄表的偏移也就不同

句柄實際是一個指針,他指向一塊包含具體信息數據的內存,可以當做索引 ,所以進程句柄是當你要訪問該進程時取得的,使用完畢必須釋放。
id一般是一個標識符,用來區別不同項

一個進程在不同的調用時間中有可能句柄的值是不一樣的,但是ID只有也只能有一個

在Windows有一張指針表(就是指針數組),這些指針指向Windows內的各種對象(Windows概念的對象),其中就包含進行對象。
句柄就就是指針數組的編號。

進程ID,一個進程被創建后這個進程ID就是不變的。
進程句柄,每次打開這個進程(OpenProcess),返回給你的句柄是變化的

參考:http://blog.csdn.net/chdhust/article/details/11856327


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM