Windows2000/private/windbg64/langapi/include/ilstore.h
2020-09-30 17:12:32 +02:00

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__