130 lines
3.9 KiB
C
130 lines
3.9 KiB
C
// ILStore API
|
|
// Copyright (C) 1994, Microsoft Corp. All Rights Reserved.
|
|
|
|
#ifndef _VC_VER_INC
|
|
#include "..\include\vcver.h"
|
|
#endif
|
|
|
|
#ifndef __ILSTORE_INCLUDED__
|
|
#define __ILSTORE_INCLUDED__
|
|
|
|
#ifndef __PDB_INCLUDED__
|
|
#include "pdb.h"
|
|
#endif
|
|
|
|
typedef unsigned long KEY; // temporary
|
|
typedef unsigned long ILSig; // signature of an ILStream
|
|
typedef unsigned char ILSType; // ILStream type: GL, EX, SY, IN, etc.
|
|
typedef unsigned char ILSpace; // storage domain hint: module, shared, PCH, etc.
|
|
typedef unsigned short ILVer; // version (no. of times changed) of an IL contribution
|
|
|
|
enum {
|
|
ilstypeNil,
|
|
ilstypeGL,
|
|
ilstypeEX,
|
|
ilstypeSY,
|
|
ilstypeIN,
|
|
ilstypeEEA
|
|
};
|
|
|
|
enum {
|
|
ilspaceNil,
|
|
ilspaceMod,
|
|
ilspaceShared,
|
|
};
|
|
|
|
enum {
|
|
ilverNil,
|
|
ilverNew,
|
|
ilverMax = 65535
|
|
};
|
|
|
|
struct ILStore;
|
|
struct ILMod;
|
|
struct Buf;
|
|
typedef struct ILStore ILStore;
|
|
typedef struct ILMod ILMod;
|
|
typedef struct Buf Buf;
|
|
|
|
#if defined(__cplusplus)
|
|
|
|
interface ILStore {
|
|
static PDBAPI(BOOL) open(PDB* ppdb, BOOL write, OUT ILStore** pilstore);
|
|
virtual BOOL release() pure;
|
|
|
|
virtual BOOL reset() pure;
|
|
virtual BOOL getILMod(const char* szModule, OUT ILMod** ppilmod) pure;
|
|
virtual BOOL getEnumILModNames(OUT EnumNameMap** ppenum) pure;
|
|
|
|
virtual BOOL getILSType(const char* szILSType, OUT ILSType* pilstype) pure;
|
|
// virtual BOOL getILSTypeMap(const char* szILSType, OUT const NameMap** ppnmILSType) pure;
|
|
virtual BOOL getILSpace(const char* szILSpace, OUT ILSpace* pilspace) pure;
|
|
// virtual BOOL getILSpaceMap(const char* szILSpace, OUT const NameMap** ppnmILSpace) pure;
|
|
#ifdef _DEBUG
|
|
virtual BOOL getInfo( OUT long *pcStreamSz,
|
|
OUT long *pcTotalILU, OUT ULONG *pnumberOfILU,
|
|
OUT long *pcTotShILU=NULL, OUT ULONG *pNumSharedILU=NULL ) pure;
|
|
#endif
|
|
};
|
|
|
|
interface EnumKeyType : Enum {
|
|
virtual void get(OUT KEY* pkey, OUT ILSType *pilt, OUT ILSpace *pils) pure;
|
|
};
|
|
|
|
interface ILMod {
|
|
virtual BOOL release() pure;
|
|
|
|
virtual BOOL reset() pure;
|
|
virtual BOOL getIL(KEY key, ILSType ilstype, OUT Buf *pbuf, OUT SIG* psig) pure;
|
|
virtual BOOL getILVer(KEY key, OUT ILVer* pilver) pure;
|
|
virtual BOOL putIL(KEY key, ILSType ilstype, Buf buf, ILSpace ilspace) pure;
|
|
virtual BOOL getEnumILKT(OUT EnumKeyType** ppenum) pure;
|
|
// virtual BOOL getEnumILStreams(ILSpace ilspace, OUT EnumStreams** ppenum) pure;
|
|
// gets information and checks for inconsistencies
|
|
|
|
// only succeeds in debug builds
|
|
virtual BOOL getInfo( OUT long *pcStreamSz,
|
|
OUT long *pcTotalILU, OUT ULONG *pnumberOfILU,
|
|
OUT long *pcTotShILU=NULL, OUT ULONG *pNumSharedILU=NULL ) pure;
|
|
|
|
virtual BOOL getAllIL(ILSType ilstype, OUT Buf* pbuf) pure;
|
|
virtual BOOL deleteIL(KEY key, ILSType ilstype) pure;
|
|
};
|
|
#endif // __cplusplus
|
|
|
|
struct Buf {
|
|
BYTE* pb;
|
|
long cb;
|
|
#ifdef __cplusplus
|
|
Buf() { }
|
|
Buf(BYTE* pb_, long cb_) {
|
|
pb = pb_;
|
|
cb = cb_;
|
|
}
|
|
#endif
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
PDBAPI(BOOL) ILStoreOpen(PDB* ppdb, BOOL write, OUT ILStore** pilstore);
|
|
PDBAPI(BOOL) ILStoreRelease(ILStore* pilstore);
|
|
PDBAPI(BOOL) ILStoreReset(ILStore* pilstore);
|
|
PDBAPI(BOOL) ILStoreGetILMod(ILStore* pilstore, const char* szModule, OUT ILMod** ppilmod);
|
|
PDBAPI(BOOL) ILStoreGetILSType(ILStore* pilstore, const char* szILSType, OUT ILSType* pilstype);
|
|
PDBAPI(BOOL) ILStoreGetILSpace(ILStore* pilstore, const char* szILSpace, OUT ILSpace* pilspace);
|
|
|
|
PDBAPI(BOOL) ILModRelease(ILMod* pilmod);
|
|
PDBAPI(BOOL) ILModReset(ILMod* pilmod);
|
|
PDBAPI(BOOL) ILModGetIL(ILMod* pilmod, KEY key, ILSType ilstype, OUT Buf *pbuf, OUT SIG* psig);
|
|
PDBAPI(BOOL) ILModGetAllIL(ILMod* pilmod, ILSType ilstype, OUT Buf *pbuf);
|
|
PDBAPI(BOOL) ILModGetILVer(ILMod* pilmod, KEY key, OUT ILVer* pilver);
|
|
PDBAPI(BOOL) ILModPutIL(ILMod* pilmod, KEY key, ILSType ilstype, Buf buf, ILSpace ilspace);
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
#endif //!__ILSTORE_INCLUDED__
|