遍曆進程Heap

來源:互聯網
上載者:User

Windows Heap管理是細粒度的記憶體管理方式。這樣做可以降低記憶體片段,提高記憶體的利用率。每個進程在啟動之初都會有一個預設的Heap,這個我們可以通過GetProcessHeap()返回Heap的控制代碼,其實這個控制代碼就是一款buffer。之後進行記憶體申請都是在這個上面進行的。具體的Heap的結構不怎麼瞭解,初步的heap管理在win 95系統設計揭秘中介紹。這裡就不詳述了。

      這裡需要介紹一些API,這些API用於遍曆每個進程的Heap相關資訊。

      _heapwalk()//c 中的本進程heap遍曆,這個地下調用的是HeapWalk 

      HeapWalk()//也是本進程的

      GetProcessHeap();//得到本進程預設heap地址

      GetProcessHeaps();//得到本進程所有的Heap地址

      Heap32ListFirst();//得到指定進程的Heap 資訊

      Heap32ListNext()

      Heap32First()//得到每個heap stub 資訊,保護地址,大小。。。

      Heap32Next()

      Toolhelp32ReadProcessMemory()//讀取指定進程,指定記憶體

      還有很多對Heap進行操作的API,這裡就不介紹了。

 

      遍曆的方法和遍曆進程、模組的方法一樣。都是使用toolhelp的api。

HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_PROCESS,0);<br />if(INVALD_HANDLE_VALUE == hProcess )<br />{<br /> ;<br />}<br />pe32.dwSize = sizeof(pe32)<br />if(!Process32First(hProcessSnap,&pe32))<br />{<br /> ;<br />}<br />do<br />{<br /> hProcessHeapSnap = CreateToolhelp32Snapshot(TH32_SNAPHEAPLIST,pe32.dwProcessID);<br /> if(INVALD_HANDLE_VALUE == hProcessHeapSnap)<br /> continue;<br /> if(Heap32ListFirst())<br /> {<br /> ;<br /> }<br /> do<br /> {<br /> //print heap list info<br /> if(Heap32First())<br /> {<br /> ;<br /> }<br /> do<br /> {<br /> //print heap info<br /> //here u can use ToolhelpReadProcessMemory or other api to read other process memory.</p><p> }while(Heap32Next());<br /> }while(Heap32ListNext());<br /> CloseHandle(hProcessHeapSnap);<br /> pe32.dwSize = sizeof(pe32);<br />}while(Process32Next(hProcessSnap,&pe32))<br />CloseHandle(hProcessSnap); 

 

 


  這裡簡單的寫了枚舉進程Heap的代碼。具體的還需要充實一下。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.