mysql如何获取句柄_关于获取进程句柄的问题
使用CreateProcess創建一個 進程 后,PROCESS_INFORMATION結構中會包含 進程 的handle,和唯一存在的 進程 ID 而后使用openprocess打開 進程 時,根據第一個參數 (dwDesiredAccess:想擁有的該 進程 訪問權限 PROCESS_ALL_ACCESS //所有能獲得的權限 PROCES
使用CreateProcess創建一個進程后,PROCESS_INFORMATION結構中會包含進程的handle,和唯一存在的進程ID
而后使用openprocess打開進程時,根據第一個參數
(dwDesiredAccess:想擁有的該進程訪問權限
PROCESS_ALL_ACCESS //所有能獲得的權限
PROCESS_CREATE_PROCESS //需要創建一個進程
PROCESS_CREATE_THREAD //需要創建一個線程
PROCESS_DUP_HANDLE //重復使用DuplicateHandle句柄
PROCESS_QUERY_INFORMATION //獲得進程信息的權限,如它的退出代碼、優先級
PROCESS_QUERY_LIMITED_INFORMATION /*獲得某些信息的權限,如果獲得了PROCESS_QUERY_INFORMATION,也擁有PROCESS_QUERY_LIMITED_INFORMATION權限*/
PROCESS_SET_INFORMATION //設置某些信息的權限,如進程優先級
PROCESS_SET_QUOTA //設置內存限制的權限,使用SetProcessWorkingSetSize
PROCESS_SUSPEND_RESUME //暫停或恢復進程的權限
PROCESS_TERMINATE //終止一個進程的權限,使用TerminateProcess
PROCESS_VM_OPERATION //操作進程內存空間的權限(可用VirtualProtectEx和WriteProcessMemory)
PROCESS_VM_READ //讀取進程內存空間的權限,可使用ReadProcessMemory
PROCESS_VM_WRITE //讀取進程內存空間的權限,可使用WriteProcessMemory
SYNCHRONIZE //等待進程終止
)
的不同,返回的句柄值是不同的,而且絕對不等于PROCESS_INFORMATION中的句柄值
當程序不關閉時,用OpenProcess獲取同一個進程,每次也都能得到不同的句柄值
因為OpenProcess返回的句柄是系統臨時給分配的操作句柄。當你沒用CloseHandle(hand)關閉這個句柄,再次調用OpenProcess獲取句柄時,他又會分配一個新的句柄給你。相當于2個句柄都指向的同一個進程
實質上這些“進程句柄”其實不是真正的進程句柄,而是進程句柄在“句柄表”中的索引(偏移),真正的進程句柄保存在進程句柄表中
若在每次句柄使用過后,關閉句柄即CloseHandle,則用OpenProcess獲取同一個進程就可得到同樣的句柄值
每個進程都有句柄表。該表的第一項就是進程自己的句柄,這也是為什么調用GetCurrentProcess()總是返回0x7FFFFFFF的原因。
轉自:http://blog.csdn.net/lovelyloulou/article/details/5252288
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的mysql如何获取句柄_关于获取进程句柄的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redhat mysql编译安装_RHE
- 下一篇: linux 双mysql_MySQL双主