2010-08-05 76 views
0

如果您在System._StartExe中放置斷點並檢查傳入的InitTable,您會注意到InitTable.UnitCount大於InitTable.TypeInfo.UnitCount。不幸的是,這些記錄都沒有記錄得很好。有人知道這兩個數字代表什麼以及它們爲什麼不同?我假設InitTable.UnitCount是應用程序中的總單元數。但另一個是什麼?爲什麼UnitCount在PackageInfoTable和TPackageTypeInfo之間有所不同?

+0

UnitCount告訴伴隨的UnitInfo表中有多少條目。我認爲TypeInfo.UnitCount對應於類似的東西。你能比較這兩張表來看看他們的內容有何不同? – 2010-08-05 22:08:35

+0

@Rob:不是。這兩個表格顯示了關於它們各自單位的不同數據組,沒有重疊,盡我所知。第一個表格甚至沒有包含單元名稱,這讓我想知道DeDede這樣的程序是從D2010之前編譯的EXE中提取它們的。 – 2010-08-05 22:23:09

回答

3

相信
- PackageInfoTable.UnitCount計數存儲在UnitInfo陣列,其中每個記錄保持用於該包裝的單位份initalization和終止代碼指針在單位。
- PackageInfoTable.TypeInfo.UnitCount以及...... UnitNames引用了存儲在TypeTable(真實類型信息或單位邊界標記)中的包含某些TypeInfo的單元。

,一個單元都包含一些初始化/ FINIT代碼,但沒有所屬類別收集和相互的,因此區別...

僅供參考,看看MemCheck.pasprocedure ChangeFinalizationsOrder,看看他們是如何破解InitTable(最多D2006) ...

相關問題