載入到程序位址空間的每乙個可執行檔案或者dll檔案都被賦予了乙個獨一無二的例項控制代碼。可執行檔案的例項被作為(w)winmain函式的第乙個引數hinstanceexe傳入。在需要載入資源的函式呼叫中,一般都要提供此控制代碼的值。
(w)winmain的hinstance引數的實際值是乙個記憶體基位址。系統將可執行檔案的映像載入到程序位址空間中的這個位置。可執行檔案的映像具體載入到哪乙個基位址,是由聯結器決定的。不同的聯結器使用不同的預設基位址。由於歷史的原因,visualstudio聯結器使用的預設基位址是0x00400000,當然還可以在vs中修改基位址的值。
下面是我們說的重點,如何通過程式獲取應用程式或者dll的基位址。
有三種方法:
1. 偽變數 __imagebase;
2. getmodulehandle函式
3. getmodulehandleex函式。
下面是使用的**:
#include
#include
extern "c" const image_dos_header __imagebase;
void dummodule()
int _tmain()
win 32Api獲取系統記憶體函式
windows程式設計中 獲取系統記憶體資訊有2個api,分別是globalmemorystatus和globalmemorystatu globalmemorystatus函式可以在c語言咧直接呼叫,但是globalmemorystatu 卻不可以直接呼叫,因為globalmemorystatu ...
WIN32API之程序和執行緒函式
從別人blog上看到的東西 很有用 記下來 cancelwaitabletimer 這個函式用於取消乙個可以等待下去的計時器操作 callnamedpipe 這個函式由乙個希望通過管道通訊的乙個客戶程序呼叫 connectnamedpipe 指示一台伺服器等待下去,直至客戶機同乙個命名管道連線 cr...
掃雷程式 win32API
1 已實現功能 基本的掃雷方塊的展開,方塊周圍雷數的計算,方塊的標旗,勝負的判斷,難度的更改 2 未實現功能 控制台顯示剩餘標旗數量和當前所用時間,選單項的豐富 3 基本原理 使用一張二維int表儲存每個方格的數字資訊,其中9表示雷 將整個雷區 客戶區 按難度分割成方格,每個方格為乙個靜態控制項,用...