亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

WIN32程序獲取父進(jìn)程ID的方法

 更新時間:2014年08月07日 14:57:52   投稿:shichen2014  
這篇文章主要介紹了WIN32程序獲取父進(jìn)程ID的方法,在進(jìn)行windows程序開發(fā)的時候有一定的實用價值,需要的朋友可以參考下

學(xué)過windows程序設(shè)計的人都知道,windows中的進(jìn)程是可以有父子關(guān)系的,擁有父子關(guān)系的進(jìn)程,一旦父進(jìn)程結(jié)束,子進(jìn)程有會隨之退出。但是如果進(jìn)程之間沒有父子關(guān)系,我們?nèi)绾巫屪舆M(jìn)程在父進(jìn)程退出是也同時跟著退出呢?方法有很多,本文介紹其中的一種利用父進(jìn)程ID的方案,實現(xiàn)的原理很簡單:先獲取父進(jìn)程的ID,然后通過ID來獲取父進(jìn)程Handle,通過監(jiān)視父進(jìn)程的Handle來決定子進(jìn)程是否退出。所以,這里的關(guān)鍵就是如何獲取父進(jìn)程的ID。

為了獲取父進(jìn)程ID,這里需要用到一個微軟未公開的API:

NTSTATUS WINAPI NtQueryInformationProcess(
 __in    HANDLE ProcessHandle,
 __in    PROCESSINFOCLASS ProcessInformationClass,
 __out   PVOID ProcessInformation,
 __in    ULONG ProcessInformationLength,
 __out_opt PULONG ReturnLength
);

這個API位于Ntdll.dll里面,通過引用頭文件winternl.h來獲取相關(guān)的類型定義。當(dāng)我們得到這個函數(shù)后,下一步就需要去了解各個函數(shù)參數(shù)的意義了,這里我們重點看一下第二個參數(shù) PROCESSINFOCLASS結(jié)構(gòu)體的內(nèi)容:

 typedef struct _PROCESS_BASIC_INFORMATION {
  PVOID Reserved1;
  PPEB PebBaseAddress;
  PVOID Reserved2[2];
  ULONG_PTR UniqueProcessId;
  PVOID Reserved3;
} PROCESS_BASIC_INFORMATION;

這是MSDN里給出的結(jié)構(gòu)體定義。到目前為止,我們還是不知道Parent進(jìn)程的ID從哪里取。正所謂,天下沒有不透風(fēng)的墻,經(jīng)過無數(shù)高手的破解,實際上最后一個字段Reserved3就是Parent進(jìn)程的ID,只要我們將它轉(zhuǎn)換為一個DWORD值即可。

經(jīng)過在x86和x64的windows2003和windows20008平臺上的測試,的確是Parent進(jìn)程的ID。

既然知道了Parent進(jìn)程的ID出處,接下來就好辦了, 基本步驟如下:

1. 先獲取自己的進(jìn)程ID,GetCurrentProcessID()

2. 獲取進(jìn)程查詢句柄,調(diào)用OpenProcess()帶上PROCESS_QUERY_INFORMATION標(biāo)志

3. 調(diào)用NtQueryInformationProcess()來查詢進(jìn)程信息

4. 獲取父進(jìn)程句柄,還是調(diào)用OpenProcess()

5. 啟動一個線程去等待父進(jìn)程退出,WaitForSingleObject(ParentHandle, INFINITE)

大功告成,這樣無論是父進(jìn)程正常退出,還是異常終止,子進(jìn)程都能被退出。

相關(guān)文章

  • OpenCV實現(xiàn)智能視頻監(jiān)控

    OpenCV實現(xiàn)智能視頻監(jiān)控

    這篇文章主要為大家詳細(xì)介紹了OpenCV實現(xiàn)智能視頻監(jiān)控,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • C++實現(xiàn)LeetCode(40.組合之和之二)

    C++實現(xiàn)LeetCode(40.組合之和之二)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(40.組合之和之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++使用遞歸方法求n階勒讓德多項式完整實例

    C++使用遞歸方法求n階勒讓德多項式完整實例

    這篇文章主要介紹了C++使用遞歸方法求n階勒讓德多項式,涉及C++遞歸算法與浮點數(shù)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-05-05
  • 使用Clion刷LeetCode的方法

    使用Clion刷LeetCode的方法

    這篇文章主要介紹了使用Clion刷LeetCode的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 70行C語言代碼實現(xiàn)貪吃蛇

    70行C語言代碼實現(xiàn)貪吃蛇

    這篇文章主要為大家詳細(xì)介紹了70行C語言代碼實現(xiàn)貪吃蛇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 麻將游戲算法深入解析及實現(xiàn)代碼

    麻將游戲算法深入解析及實現(xiàn)代碼

    這篇文章主要介紹了麻將游戲算法深入解析及實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • C++命名空間域的實現(xiàn)示例

    C++命名空間域的實現(xiàn)示例

    命名空間域就是一個獨立的空間外面不能直接調(diào)用該空間域只能用訪問限定符指定訪問該空間域,本文主要介紹了C++命名空間域的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • C語言入門的一些基本資源推薦和程序語法概覽

    C語言入門的一些基本資源推薦和程序語法概覽

    這篇文章主要介紹了C語言入門的一些基本資源推薦和程序語法概覽,C語言是很多現(xiàn)代高級編程語言的基礎(chǔ),需要的朋友可以參考下
    2015-12-12
  • 利用C語言實現(xiàn)HashTable

    利用C語言實現(xiàn)HashTable

    根據(jù)KEY從hashtable中獲取接點,步驟是先根據(jù)KEY計算hash值,然后從hashtable中找到指定的接點或者接點鏈表
    2013-09-09
  • C++如何判斷一個數(shù)是不是素數(shù)

    C++如何判斷一個數(shù)是不是素數(shù)

    這篇文章主要介紹了C++如何判斷一個數(shù)是不是素數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論