Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.1 KiB

4 years ago
  1. //////////////////////////////////////////////////////////////////////////////
  2. // Mod implementation declarations
  3. struct Mod1 : public Mod { // Mod (one module's debug info) implementation
  4. public:
  5. INTV QueryInterfaceVersion();
  6. IMPV QueryImplementationVersion();
  7. BOOL AddTypes(PB pbTypes, CB cb);
  8. BOOL AddSymbols(PB pbSym, CB cb);
  9. BOOL AddPublic(SZ_CONST szPublic, ISECT isect, OFF off);
  10. BOOL AddLines(SZ_CONST szSrc, ISECT isect, OFF offCon, CB cbCon, OFF doff, LINE lineStart, PB pbCoff, CB cbCoff);
  11. BOOL AddSecContrib(ISECT isect, OFF off, CB cb, DWORD dwCharacteristics);
  12. BOOL QueryCBName(OUT CB* pcb);
  13. BOOL QueryName(OUT char szName[_MAX_PATH], OUT CB* pcb);
  14. BOOL QueryCBFile(OUT CB* pcb);
  15. BOOL QueryFile(OUT char szFile[_MAX_PATH], OUT CB* pcb);
  16. BOOL QuerySymbols(PB pbSym, CB* pcb);
  17. BOOL QueryLines(PB pbLines, CB* pcb);
  18. BOOL SetPvClient(void *pvClient_)
  19. {
  20. pvClient = pvClient_;
  21. return TRUE;
  22. }
  23. BOOL GetPvClient(OUT void** ppvClient_)
  24. {
  25. *ppvClient_ = pvClient;
  26. return TRUE;
  27. }
  28. BOOL QuerySecContrib(OUT ISECT* pisect, OUT OFF* poff, OUT CB* pcb, OUT DWORD* pdwCharacteristics);
  29. BOOL QueryDBI(OUT DBI** ppdbi)
  30. {
  31. *ppdbi = pdbi1;
  32. return TRUE;
  33. }
  34. BOOL QueryImod(OUT IMOD* pimod)
  35. {
  36. *pimod = ximodForImod(imod);
  37. return TRUE;
  38. }
  39. BOOL Close();
  40. private:
  41. enum {impv = (IMPV) 930803};
  42. PDB1* ppdb1;
  43. DBI1* pdbi1;
  44. IMOD imod;
  45. MLI* pmli;
  46. TM* ptm;
  47. void* pvClient;
  48. USHORT fSymsAdded : 1;
  49. USHORT unused : 15;
  50. Buffer bufSyms;
  51. Buffer bufLines;
  52. Buffer bufFpo;
  53. Buffer bufSymsOut;
  54. Buffer bufGlobalRefs;
  55. SC sc;
  56. Mod1(PDB1* ppdb1_, DBI1* pdbi1_, IMOD imod_);
  57. ~Mod1();
  58. BOOL fInit();
  59. BOOL fCommit();
  60. BOOL fUpdateLines();
  61. BOOL fUpdateSyms();
  62. inline BOOL fUpdateSecContrib();
  63. BOOL fProcessSyms();
  64. BOOL fProcessGlobalRefs();
  65. BOOL fEnsureSn(SN* psn)
  66. {
  67. return ppdb1->fEnsureSn(psn);
  68. }
  69. BOOL fEnsureNoSn(SN* psn)
  70. {
  71. return ppdb1->fEnsureNoSn(psn);
  72. }
  73. BOOL fUpdateFileInfo();
  74. BOOL initFileInfo(IFILE ifileMac) { return pdbi1->initFileInfo(imod, ifileMac); }
  75. BOOL addFileInfo(IFILE ifile, SZ_CONST szFile);
  76. BOOL fReadPbCb(PB pb, CB* pcb, OFF off, CB cb);
  77. CB cbGlobalRefs();
  78. BOOL queryGlobalRefs(PB pbGlobalRefs, CB cb);
  79. BOOL fUdtIsDefn(PSYM psym);
  80. BOOL packType(PSYM psym);
  81. inline BOOL fCopySymOut(PSYM psym);
  82. inline BOOL fCopySymOut(PSYM psym, PSYM * ppsymOut);
  83. inline BOOL fCopyGlobalRef(OFF off);
  84. inline void EnterLevel(PSYM psym);
  85. inline void ExitLevel(PSYM psym);
  86. SZ szObjFile() { return pdbi1->pmodiForImod(imod)->szObjFile(); }
  87. SZ szModule() { return pdbi1->pmodiForImod(imod)->szModule(); }
  88. CB cbSyms() { return pdbi1->pmodiForImod(imod)->cbSyms; }
  89. CB cbLines() { return pdbi1->pmodiForImod(imod)->cbLines; }
  90. CB cbFpo() { return pdbi1->pmodiForImod(imod)->cbFpo; }
  91. friend BOOL DBI1::openModByImod(IMOD imod, OUT Mod** ppmod);
  92. friend BOOL MLI::EmitFileInfo(Mod1* pmod1);
  93. };