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.

76 lines
2.3 KiB

4 years ago
  1. //////////////////////////////////////////////////////////////////////////////
  2. // PDB implementation declarations
  3. struct PDBStream {
  4. IMPV impv;
  5. SIG sig;
  6. AGE age;
  7. PDBStream() : impv(0), sig(0), age(0){}
  8. };
  9. class PDB1 : public PDB { // PDB (program database) implementation
  10. public:
  11. static BOOL OpenValidate(SZ szPDB, SZ szPath, SZ szMode, SIG sig, AGE age, long cbPage,
  12. OUT EC* pec, OUT char szError[cbErrMax], OUT PDB** pppdb);
  13. static BOOL OpenValidateEx(SZ szPDB, SZ szPathOrig, SZ szSearchPath, SZ szMode, SIG sig, AGE age,
  14. long cbPage, OUT EC* pec, OUT char szError[cbErrMax], OUT PDB** pppdb);
  15. static BOOL Open(SZ szPDB, SZ szMode, SIG sigInitial, long cbPage, EC* pec,
  16. char szError[cbErrMax], OUT PDB** pppdb1);
  17. INTV QueryInterfaceVersion();
  18. IMPV QueryImplementationVersion();
  19. EC QueryLastError(char szError[cbErrMax]);
  20. SZ QueryPDBName(OUT char szPDBName[_MAX_PATH]);
  21. SIG QuerySignature();
  22. AGE QueryAge();
  23. BOOL OpenStream(SZ_CONST szStream, OUT Stream** ppstream);
  24. BOOL GetEnumStreamNameMap(OUT Enum** ppenum);
  25. BOOL CreateDBI(SZ_CONST szTarget, OUT DBI** ppdbi);
  26. BOOL OpenDBI(SZ_CONST szTarget, SZ_CONST szMode, OUT DBI** ppdbi);
  27. BOOL OpenTpi(SZ_CONST szMode, TPI** pptpi);
  28. BOOL Commit();
  29. BOOL Close();
  30. BOOL GetRawBytes(PFNfReadPDBRawBytes fSnarfRawBytes);
  31. void setLastError(EC ec, SZ szErr = 0);
  32. void setWriteError();
  33. void setReadError();
  34. void setOOMError();
  35. void setUsageError();
  36. protected:
  37. #pragma warning(disable:4355)
  38. PDB1(MSF* pmsf_, SZ szPDB) : pmsf(pmsf_), ecLast(EC_OK), ptpi1(0), nmt(niForNextFreeSn, this)
  39. {
  40. _fullpath (szPDBName, szPDB, _MAX_PATH);
  41. }
  42. private:
  43. enum { impvVC2 = 19941610, impvVC4 = 19950623, impv = 19950814 };
  44. MSF* pmsf; // MSF, may be 0 for a C8.0 PDB
  45. NMTNI nmt;
  46. PDBStream pdbStream;
  47. TPI1*ptpi1;
  48. char szPDBName[_MAX_PATH];
  49. EC ecLast;
  50. char szErrLast[cbErrMax];
  51. BOOL savePdbStream();
  52. BOOL loadPdbStream(MSF* pmsf, SZ szPdb, EC* pec, SZ szError, BOOL fRead);
  53. BOOL fEnsureSn(SN* psn);
  54. BOOL fEnsureNoSn(SN* psn);
  55. friend DBI1;
  56. friend Mod1;
  57. friend GSI1;
  58. friend PSGSI1;
  59. friend TPI1;
  60. static BOOL niForNextFreeSn(void* pv, OUT NI* pni);
  61. BOOL fFullBuild;
  62. };
  63. #pragma warning(default:4355)
  64. inline void* operator new(size_t size, PDB1* ppdb1)
  65. {
  66. PB pb = new BYTE[size];
  67. if (!pb)
  68. ppdb1->setOOMError();
  69. return pb;
  70. }