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

//////////////////////////////////////////////////////////////////////////////
// PDB implementation declarations
struct PDBStream {
IMPV impv;
SIG sig;
AGE age;
PDBStream() : impv(0), sig(0), age(0){}
};
class PDB1 : public PDB { // PDB (program database) implementation
public:
static BOOL OpenValidate(SZ szPDB, SZ szPath, SZ szMode, SIG sig, AGE age, long cbPage,
OUT EC* pec, OUT char szError[cbErrMax], OUT PDB** pppdb);
static BOOL OpenValidateEx(SZ szPDB, SZ szPathOrig, SZ szSearchPath, SZ szMode, SIG sig, AGE age,
long cbPage, OUT EC* pec, OUT char szError[cbErrMax], OUT PDB** pppdb);
static BOOL Open(SZ szPDB, SZ szMode, SIG sigInitial, long cbPage, EC* pec,
char szError[cbErrMax], OUT PDB** pppdb1);
INTV QueryInterfaceVersion();
IMPV QueryImplementationVersion();
EC QueryLastError(char szError[cbErrMax]);
SZ QueryPDBName(OUT char szPDBName[_MAX_PATH]);
SIG QuerySignature();
AGE QueryAge();
BOOL OpenStream(SZ_CONST szStream, OUT Stream** ppstream);
BOOL GetEnumStreamNameMap(OUT Enum** ppenum);
BOOL CreateDBI(SZ_CONST szTarget, OUT DBI** ppdbi);
BOOL OpenDBI(SZ_CONST szTarget, SZ_CONST szMode, OUT DBI** ppdbi);
BOOL OpenTpi(SZ_CONST szMode, TPI** pptpi);
BOOL Commit();
BOOL Close();
BOOL GetRawBytes(PFNfReadPDBRawBytes fSnarfRawBytes);
void setLastError(EC ec, SZ szErr = 0);
void setWriteError();
void setReadError();
void setOOMError();
void setUsageError();
protected:
#pragma warning(disable:4355)
PDB1(MSF* pmsf_, SZ szPDB) : pmsf(pmsf_), ecLast(EC_OK), ptpi1(0), nmt(niForNextFreeSn, this)
{
_fullpath (szPDBName, szPDB, _MAX_PATH);
}
private:
enum { impvVC2 = 19941610, impvVC4 = 19950623, impv = 19950814 };
MSF* pmsf; // MSF, may be 0 for a C8.0 PDB
NMTNI nmt;
PDBStream pdbStream;
TPI1*ptpi1;
char szPDBName[_MAX_PATH];
EC ecLast;
char szErrLast[cbErrMax];
BOOL savePdbStream();
BOOL loadPdbStream(MSF* pmsf, SZ szPdb, EC* pec, SZ szError, BOOL fRead);
BOOL fEnsureSn(SN* psn);
BOOL fEnsureNoSn(SN* psn);
friend DBI1;
friend Mod1;
friend GSI1;
friend PSGSI1;
friend TPI1;
static BOOL niForNextFreeSn(void* pv, OUT NI* pni);
BOOL fFullBuild;
};
#pragma warning(default:4355)
inline void* operator new(size_t size, PDB1* ppdb1)
{
PB pb = new BYTE[size];
if (!pb)
ppdb1->setOOMError();
return pb;
}