文件佔坑

DuplicateHandle函數學習到的知識。ide

其實咱們在使用函數GetCurrentProcess得到的句柄值是虛假的句柄值。若是咱們須要在進程之間通訊使用這些句柄的話,就須要將其轉換。函數

下邊的是MSDN上面的解釋:學習

The pseudo handle need not be closed when it is no longer needed. Calling the CloseHandle function with a pseudo handle has no effect. If the pseudo handle is duplicated by DuplicateHandle, the duplicate handle must be closed.spa

這個僞句柄在再也不使用的時候是不須要關閉的,使用CloseHandle函數來關閉僞句柄是沒有做用的。若是僞句柄被DuplicateHandle函數複製,那麼複製的句柄就必須被關閉。線程

因此咱們在使用GetCurrentProcess/GetCurrentThread獲得的句柄只適合進程或者線程內部使用。對象


在系統中,對象被分爲兩類:內核對象和用戶對象,如進程對象,線程對象,文件映射對象都是內核對象;而窗口菜單等,都是用戶對象。blog

二者之間的區別:索引

用於標識用戶對象的句柄是系統惟一的,這也就是爲何一個進程能夠對另一個的用戶對象句柄進行操做。進程

內核對象是爲了增強內核系統的穩定性,所以,內核對象句柄的進程相關的,在每個進程中,都有一個內核對象表,每個對象的索引(不徹底是)做爲內核對象的句柄。get


因爲DuplicateHandle複製的句柄和源句柄的對象指向的是同一個對象,因此,任何對複製句柄的改變都會影響到源句柄和目的句柄。


轉自:http://mzf2008.blog.163.com/blog/static/35599786201152815654616/

相關文章
相關標籤/搜索