回覆列表
  • 1 # 使用者8140234220371

    (a)DllB靜態連結DllA

    (b)DllB在DllMain裡呼叫DllA的一個函式A1()

    (c)DllA在DllMain裡呼叫LoadLibrary("DllB.dll")

    分析:當執行到DllA中的DllMain的時侯,DllA.dll已經被對映到程序地址空間中,已經加入到了module list中。當它呼叫LoadLibrary("DllB.dll")時,首先會呼叫LdrpMapDll把DllB.dll對映到程序地址空間,並加入到InLoadOrderModuleList中。然後會呼叫LdrpLoadImportModule(...)載入它引用的DllA.dll,而 LdrpLoadImportModule會呼叫LdrpCheckForLoadedDll檢查是否DllA.dll已經被載入。 LdrpCheckForLoadedDll會在雜湊表LdrpHashTable中查詢DllA.dll,而顯然它能找到,所以載入DllA.dll這一步被成功調過。

  • 中秋節和大豐收的關聯?
  • 夢見別人都掉水裡什麼意思?