为什么 PackageInfoTable 和 TPackageTypeInfo 之间的 UnitCount 不同?
如果您在 System._StartExe 中放置断点并检查传入的 InitTable,您会注意到 InitTable.UnitCount 大于 InitTable.TypeInfo。单位计数。不幸的是,这些记录都没有得到很好的记录。有谁知道这两个数字代表什么以及为什么它们不同?我假设 InitTable.UnitCount 是应用程序中的单元总数。但另一件事是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信
-
PackageInfoTable.UnitCount
对存储在UnitInfo
数组中的单位进行计数,其中每个记录保存包的单位部分的初始化和终止代码指针。-
PackageInfoTable.TypeInfo.UnitCount
以及 ...UnitNames
引用包含存储在TypeTable
中的一些TypeInfo
的单元(真实类型信息或单位边界标记)。一个单元可以包含一些 Init/Finit 代码,但没有 TypeInfo 可以相互收集,因此存在差异...
仅供参考,请查看 procedure ChangeFinalizationsOrder。 free.fr/pro/freeware/memcheck/" rel="nofollow noreferrer">MemCheck.pas 查看他们如何破解 InitTable(截至 D2006)...
I believe that
-
PackageInfoTable.UnitCount
counts the units stored in theUnitInfo
array, where each record holds the initalization and finalization code pointers for the units parts of the package.-
PackageInfoTable.TypeInfo.UnitCount
along with ...UnitNames
references the Units containing someTypeInfo
stored in theTypeTable
(real Type Info or unit boundary marker).A unit can contain some Init/Finit code but no TypeInfo to gather and reciprocally, hence the difference...
FYI, look at
procedure ChangeFinalizationsOrder
in MemCheck.pas to see how they hack the InitTable (up to D2006)...