Source code of Windows XP (NT5)
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.
|
|
//-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: catdb.hxx
//
// Contents: Microsoft Internet Security Catalog Utilities
//
// History: 23-Oct-1997 pberkman created
//
//--------------------------------------------------------------------------
#ifndef CATDB_HXX
#define CATDB_HXX
#include "cbfile.hxx"
#pragma pack(8)
//
// the following are global tracking files (eg: only one in the "CatRoot")
//
#define SYSMAST_NAME L"SYSMAST"
typedef struct SysMast_ { DWORD SysId; GUID SysGuid; // GuidIdx
WCHAR SubDir[REG_MAX_GUID_TEXT];
} SysMast;
typedef struct SysMastRec_ { DWORD SysId; GUID SysGuid; // GuidIdx
char SubDir[REG_MAX_GUID_TEXT];
} SysMastRec;
//
// the following are "localized" tracking files. eg: they live in each
// sub-systems directory.
//
#define CATMAST_NAME L"CATMAST"
typedef struct CatMast_ { DWORD CatId; // CatIdIdx
DWORD SysId; WCHAR OrigName[MAX_PATH]; WCHAR CurName[MAX_PATH]; FILETIME InstDate;
} CatMast;
typedef struct CatMastRec_ { DWORD CatId; // CatIdIdx
DWORD SysId; char OrigName[MAX_PATH]; char CurName[MAX_PATH]; FILETIME InstDate;
} CatMastRec;
#define HASHMAST_NAME L"HASHMAST"
#define MAX_HASH_LEN 20 // SHA1
typedef struct HashMast_ { BYTE Hash[MAX_HASH_LEN]; // HashIdx
DWORD SysId; WCHAR CatName[MAX_PATH];
} HashMast;
typedef struct HashMastRec_ { BYTE Hash[MAX_HASH_LEN]; // HashIdx
DWORD SysId; char CatName[MAX_PATH];
} HashMastRec;
#pragma pack()
#define CATDB_VERSION_1 0x0001
class cCatalogDB_ { public: cCatalogDB_(WCHAR *pwszBaseDirIn, WCHAR *pwszSubSysDirIn); virtual ~cCatalogDB_(void);
BOOL Initialize(void);
DWORD SysMast_GetNewId(void); BOOL SysMast_Get(const GUID *pgSubSys, SysMast *psData); BOOL SysMast_Add(SysMast *psData); BOOL SysMast_GetFirst(SysMast *psData); BOOL SysMast_GetNext(SysMast *psData); DWORD SysMast_NumKeys(void);
DWORD CatMast_GetNewId(void); BOOL CatMast_Get(DWORD ulId, CatMast *psData); BOOL CatMast_Add(CatMast *psData);
private: cBFile_ *pSysMast; cBFile_ *pCatMast; };
class cHashDB_ { public: WCHAR *pwszSubSysDir;
cHashDB_(WCHAR *pwszBaseDirIn, WCHAR *pwszSubSysDirIn, BOOL *pfCreatedOK); virtual ~cHashDB_(void);
BOOL Initialize(void);
BOOL HashMast_Get(DWORD dwStartRec, BYTE *pbHash, DWORD cbHash, HashMast *psData); BOOL HashMast_Add(HashMast *psData);
DWORD HashMast_GetRecNum(void) { return(pHashMast->getRecNum()); }
DWORD HashMast_GetKeyNum(void) { return(pHashMast->getKeyNum()); }
private: cBFile_ *pHashMast;
};
#endif // CATDB_HXX
|