mirror of https://github.com/lianthony/NT4.0
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.
1063 lines
23 KiB
1063 lines
23 KiB
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
pdb.c
|
|
|
|
Abstract:
|
|
|
|
This module implements a thin thunking layer for
|
|
accessing the MSVC PDB Dll dynamically.
|
|
|
|
Author:
|
|
|
|
Wesley Witt (wesw) 30-Mar-1995
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include <windows.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "pdb.h"
|
|
|
|
BOOL f32bitTypeIndices;
|
|
|
|
#define GetFunc(fn, type) \
|
|
{ \
|
|
if (!_##fn) { \
|
|
if (!LoadPdbLibrary()) { \
|
|
return FALSE; \
|
|
} \
|
|
_##fn = (type)GetProcAddress( hPdbLib, #fn ); \
|
|
if (!_##fn) { \
|
|
return FALSE; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
typedef BOOL (__cdecl *PPDBOPENVALIDATE) (LPSTR,LPSTR,LPSTR,ULONG,ULONG,PLONG,LPSTR,PVOID*);
|
|
typedef BOOL (__cdecl *PPDBOPEN) (LPSTR,LPSTR,ULONG,PLONG,LPSTR,PVOID*);
|
|
typedef BOOL (__cdecl *PPDBEXPORTVALIDATEINTERFACE) (ULONG);
|
|
typedef ULONG (__cdecl *PPDBQUERYLASTERROR) (PVOID,LPSTR);
|
|
typedef ULONG (__cdecl *PPDBQUERYINTERFACEVERSION) (PVOID);
|
|
typedef ULONG (__cdecl *PPDBQUERYIMPLEMENTATIONVERSION) (PVOID);
|
|
typedef LPSTR (__cdecl *PPDBQUERYPDBNAME) (PVOID,LPSTR);
|
|
typedef ULONG (__cdecl *PPDBQUERYSIGNATURE) (PVOID);
|
|
typedef ULONG (__cdecl *PPDBQUERYAGE) (PVOID);
|
|
typedef BOOL (__cdecl *PPDBCREATEDBI) (PVOID,LPSTR,PVOID*);
|
|
typedef BOOL (__cdecl *PPDBOPENDBI) (PVOID,LPSTR,LPSTR,PVOID*);
|
|
typedef BOOL (__cdecl *PPDBOPENTPI) (PVOID,LPSTR,PVOID*);
|
|
typedef BOOL (__cdecl *PPDBCOMMIT) (PVOID);
|
|
typedef BOOL (__cdecl *PPDBCLOSE) (PVOID);
|
|
typedef ULONG (__cdecl *PDBIQUERYINTERFACEVERSION) (PVOID);
|
|
typedef ULONG (__cdecl *PDBIQUERYIMPLEMENTATIONVERSION) (PVOID);
|
|
typedef BOOL (__cdecl *PDBIOPENMOD) (PVOID,LPSTR,LPSTR,PVOID*);
|
|
typedef BOOL (__cdecl *PDBIDELETEMOD) (PVOID, LPSTR);
|
|
typedef BOOL (__cdecl *PDBIQUERYNEXTMOD) (PVOID,PVOID,PVOID*);
|
|
typedef BOOL (__cdecl *PDBIOPENGLOBALS) (PVOID,PVOID*);
|
|
typedef BOOL (__cdecl *PDBIOPENPUBLICS) (PVOID,PVOID*);
|
|
typedef BOOL (__cdecl *PDBIADDSEC) (PVOID,USHORT,USHORT,LONG);
|
|
typedef BOOL (__cdecl *PDBIQUERYMODFROMADDR) (PVOID,USHORT,LONG,PVOID*,PUSHORT,PLONG,PLONG);
|
|
typedef BOOL (__cdecl *PDBIQUERYSECMAP) (PVOID,PUCHAR,LONG);
|
|
typedef BOOL (__cdecl *PDBIQUERYFILEINFO) (PVOID,PUCHAR,LONG);
|
|
typedef VOID (__cdecl *PDBIDUMPMODS) (PVOID);
|
|
typedef VOID (__cdecl *PDBIDUMPSECCONTRIBS) (PVOID);
|
|
typedef BOOL (__cdecl *PDBIDUMPSECMAP) (PVOID);
|
|
typedef BOOL (__cdecl *PDBICLOSE) (PVOID);
|
|
typedef BOOL (__cdecl *PDBIADDTHUNKMAP) (PVOID,PLONG,UINT,LONG,PVOID,UINT,USHORT,LONG);
|
|
typedef ULONG (__cdecl *PMODQUERYINTERFACEVERSION) (PVOID);
|
|
typedef ULONG (__cdecl *PMODQUERYIMPLEMENTATIONVERSION) (PVOID);
|
|
typedef BOOL (__cdecl *PMODADDTYPES) (PVOID,PUCHAR,LONG);
|
|
typedef BOOL (__cdecl *PMODADDSYMBOLS) (PVOID,PUCHAR,LONG);
|
|
typedef BOOL (__cdecl *PMODADDPUBLIC) (PVOID,LPSTR,USHORT,LONG);
|
|
typedef BOOL (__cdecl *PMODADDLINES) (PVOID,LPSTR,USHORT,LONG,LONG,USHORT,PUCHAR,LONG);
|
|
typedef BOOL (__cdecl *PMODADDSECCONTRIB) (PVOID,USHORT,LONG,LONG);
|
|
typedef BOOL (__cdecl *PMODQUERYCBNAME) (PVOID,PLONG);
|
|
typedef BOOL (__cdecl *PMODQUERYNAME) (PVOID,LPSTR,PLONG);
|
|
typedef BOOL (__cdecl *PMODQUERYSYMBOLS) (PVOID,LPSTR,PLONG);
|
|
typedef BOOL (__cdecl *PMODQUERYLINES) (PVOID,LPSTR,PLONG);
|
|
typedef BOOL (__cdecl *PMODSETPVCLIENT) (PVOID,PVOID);
|
|
typedef BOOL (__cdecl *PMODGETPVCLIENT) (PVOID,PVOID*);
|
|
typedef BOOL (__cdecl *PMODQUERYSECCONTRIB) (PVOID,PUSHORT,PLONG,PLONG);
|
|
typedef BOOL (__cdecl *PMODQUERYIMOD) (PVOID,PUSHORT);
|
|
typedef BOOL (__cdecl *PMODQUERYDBI) (PVOID,PVOID);
|
|
typedef BOOL (__cdecl *PMODCLOSE) (PVOID);
|
|
typedef ULONG (__cdecl *PTYPESQUERYINTERFACEVERSION) (PVOID);
|
|
typedef ULONG (__cdecl *PTYPESQUERYIMPLEMENTATIONVERSION) (PVOID);
|
|
typedef BOOL (__cdecl *PTYPESQUERYTIFORCVRECORD) (PVOID,PUCHAR,PUSHORT);
|
|
typedef BOOL (__cdecl *PTYPESQUERYCVRECORDFORTI) (PVOID,USHORT,PUCHAR,PLONG);
|
|
typedef BOOL (__cdecl *PTYPESQUERYPBCVRECORDFORTI) (PVOID,USHORT,PUCHAR);
|
|
typedef USHORT(__cdecl *PTYPESQUERYTIMIN) (PVOID);
|
|
typedef USHORT(__cdecl *PTYPESQUERYTIMAC) (PVOID);
|
|
typedef LONG (__cdecl *PTYPESQUERYCB) (PVOID);
|
|
typedef BOOL (__cdecl *PTYPESCLOSE) (PVOID);
|
|
typedef PUCHAR(__cdecl *PGSINEXTSYM) (PVOID,PUCHAR);
|
|
typedef PUCHAR(__cdecl *PGSIHASHSYM) (PVOID,LPSTR,PUCHAR);
|
|
typedef PUCHAR(__cdecl *PGSINEARESTSYM) (PVOID,USHORT,LONG,PLONG);
|
|
typedef BOOL (__cdecl *PGSICLOSE) (PVOID);
|
|
|
|
|
|
typedef BOOL (__cdecl *PTYPESQUERYTIFORCVRECORDEX) (PVOID,PUCHAR,PULONG);
|
|
typedef BOOL (__cdecl *PTYPESQUERYCVRECORDFORTIEX) (PVOID,ULONG,PUCHAR,PLONG);
|
|
typedef BOOL (__cdecl *PTYPESQUERYPBCVRECORDFORTIEX) (PVOID,ULONG,PUCHAR);
|
|
typedef ULONG (__cdecl *PTYPESQUERYTIMINEX) (PVOID);
|
|
typedef ULONG (__cdecl *PTYPESQUERYTIMACEX) (PVOID);
|
|
typedef BOOL (__cdecl *PTYPESCOMMIT) (PVOID);
|
|
typedef BOOL (__cdecl *PTYPESQUERYTIFORUDT) (PVOID,PCHAR,BOOL,PUSHORT);
|
|
typedef BOOL (__cdecl *PTYPESQUERYTIFORUDTEX) (PVOID,PCHAR,BOOL,PULONG);
|
|
typedef BOOL (__cdecl *PTYPESSUPPORTQUERYTIFORUDT) (PVOID);
|
|
typedef BOOL (__cdecl *PTYPESFIS16BITTYPEPOOL) (PVOID);
|
|
|
|
|
|
|
|
HINSTANCE hPdbLib;
|
|
PPDBOPENVALIDATE _PDBOpenValidate;
|
|
PPDBOPEN _PDBOpen;
|
|
PPDBEXPORTVALIDATEINTERFACE _PDBExportValidateInterface;
|
|
PPDBQUERYLASTERROR _PDBQueryLastError;
|
|
PPDBQUERYINTERFACEVERSION _PDBQueryInterfaceVersion;
|
|
PPDBQUERYIMPLEMENTATIONVERSION _PDBQueryImplementationVersion;
|
|
PPDBQUERYPDBNAME _PDBQueryPDBName;
|
|
PPDBQUERYSIGNATURE _PDBQuerySignature;
|
|
PPDBQUERYAGE _PDBQueryAge;
|
|
PPDBCREATEDBI _PDBCreateDBI;
|
|
PPDBOPENDBI _PDBOpenDBI;
|
|
PPDBOPENTPI _PDBOpenTpi;
|
|
PPDBCOMMIT _PDBCommit;
|
|
PPDBCLOSE _PDBClose;
|
|
PDBIQUERYINTERFACEVERSION _DBIQueryInterfaceVersion;
|
|
PDBIQUERYIMPLEMENTATIONVERSION _DBIQueryImplementationVersion;
|
|
PDBIOPENMOD _DBIOpenMod;
|
|
PDBIDELETEMOD _DBIDeleteMod;
|
|
PDBIQUERYNEXTMOD _DBIQueryNextMod;
|
|
PDBIOPENGLOBALS _DBIOpenGlobals;
|
|
PDBIOPENPUBLICS _DBIOpenPublics;
|
|
PDBIADDSEC _DBIAddSec;
|
|
PDBIQUERYMODFROMADDR _DBIQueryModFromAddr;
|
|
PDBIQUERYSECMAP _DBIQuerySecMap;
|
|
PDBIQUERYFILEINFO _DBIQueryFileInfo;
|
|
PDBIDUMPMODS _DBIDumpMods;
|
|
PDBIDUMPSECCONTRIBS _DBIDumpSecContribs;
|
|
PDBIDUMPSECMAP _DBIDumpSecMap;
|
|
PDBICLOSE _DBIClose;
|
|
PDBIADDTHUNKMAP _DBIAddThunkMap;
|
|
PMODQUERYINTERFACEVERSION _ModQueryInterfaceVersion;
|
|
PMODQUERYIMPLEMENTATIONVERSION _ModQueryImplementationVersion;
|
|
PMODADDTYPES _ModAddTypes;
|
|
PMODADDSYMBOLS _ModAddSymbols;
|
|
PMODADDPUBLIC _ModAddPublic;
|
|
PMODADDLINES _ModAddLines;
|
|
PMODADDSECCONTRIB _ModAddSecContrib;
|
|
PMODQUERYCBNAME _ModQueryCBName;
|
|
PMODQUERYNAME _ModQueryName;
|
|
PMODQUERYSYMBOLS _ModQuerySymbols;
|
|
PMODQUERYLINES _ModQueryLines;
|
|
PMODSETPVCLIENT _ModSetPvClient;
|
|
PMODGETPVCLIENT _ModGetPvClient;
|
|
PMODQUERYSECCONTRIB _ModQuerySecContrib;
|
|
PMODQUERYIMOD _ModQueryImod;
|
|
PMODQUERYDBI _ModQueryDBI;
|
|
PMODCLOSE _ModClose;
|
|
PTYPESQUERYINTERFACEVERSION _TypesQueryInterfaceVersion;
|
|
PTYPESQUERYIMPLEMENTATIONVERSION _TypesQueryImplementationVersion;
|
|
PTYPESQUERYTIFORCVRECORD _TypesQueryTiForCVRecord;
|
|
PTYPESQUERYCVRECORDFORTI _TypesQueryCVRecordForTi;
|
|
PTYPESQUERYPBCVRECORDFORTI _TypesQueryPbCVRecordForTi;
|
|
PTYPESQUERYTIMIN _TypesQueryTiMin;
|
|
PTYPESQUERYTIMAC _TypesQueryTiMac;
|
|
PTYPESQUERYCB _TypesQueryCb;
|
|
PTYPESCLOSE _TypesClose;
|
|
PTYPESCOMMIT _TypesCommit;
|
|
|
|
PTYPESQUERYTIFORCVRECORDEX _TypesQueryTiForCVRecordEx;
|
|
PTYPESQUERYCVRECORDFORTIEX _TypesQueryCVRecordForTiEx;
|
|
PTYPESQUERYPBCVRECORDFORTIEX _TypesQueryPbCVRecordForTiEx;
|
|
PTYPESQUERYTIMINEX _TypesQueryTiMinEx;
|
|
PTYPESQUERYTIMACEX _TypesQueryTiMacEx;
|
|
PTYPESQUERYTIFORUDT _TypesQueryTiForUDT;
|
|
PTYPESQUERYTIFORUDTEX _TypesQueryTiForUDTEx;
|
|
PTYPESSUPPORTQUERYTIFORUDT _TypesSupportQueryTiForUDT;
|
|
PTYPESFIS16BITTYPEPOOL _TypesfIs16bitTypePool;
|
|
|
|
PGSINEXTSYM _GSINextSym;
|
|
PGSIHASHSYM _GSIHashSym;
|
|
PGSINEARESTSYM _GSINearestSym;
|
|
PGSICLOSE _GSIClose;
|
|
|
|
|
|
|
|
|
|
|
|
BOOL
|
|
__inline
|
|
LoadPdbLibrary(
|
|
VOID
|
|
)
|
|
{
|
|
if (hPdbLib) {
|
|
return TRUE;
|
|
}
|
|
hPdbLib = LoadLibrary( "mspdb50.dll" );
|
|
if (hPdbLib) {
|
|
f32bitTypeIndices = TRUE;
|
|
} else {
|
|
f32bitTypeIndices = FALSE;
|
|
|
|
hPdbLib = LoadLibrary( "mspdb41.dll" );
|
|
if (!hPdbLib) {
|
|
hPdbLib = LoadLibrary( "mspdb40.dll" );
|
|
if (!hPdbLib) {
|
|
hPdbLib = LoadLibrary( "dbi.dll" );
|
|
if (!hPdbLib) {
|
|
return FALSE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL
|
|
PDBOpenValidate(
|
|
LPSTR szPDB,
|
|
LPSTR szPath,
|
|
LPSTR szMode,
|
|
ULONG sig,
|
|
ULONG age,
|
|
PLONG pec,
|
|
LPSTR szError,
|
|
PVOID *Pdb
|
|
)
|
|
{
|
|
GetFunc( PDBOpenValidate, PPDBOPENVALIDATE );
|
|
|
|
return _PDBOpenValidate(
|
|
szPDB,
|
|
szPath,
|
|
szMode,
|
|
sig,
|
|
age,
|
|
pec,
|
|
szError,
|
|
Pdb
|
|
);
|
|
}
|
|
|
|
|
|
BOOL
|
|
PDBOpen(
|
|
LPSTR szPDB,
|
|
LPSTR szMode,
|
|
ULONG sigInitial,
|
|
PLONG pec,
|
|
LPSTR szError,
|
|
PVOID *Pdb
|
|
)
|
|
{
|
|
GetFunc( PDBOpen, PPDBOPEN );
|
|
|
|
return _PDBOpen(
|
|
szPDB,
|
|
szMode,
|
|
sigInitial,
|
|
pec,
|
|
szError,
|
|
Pdb
|
|
);
|
|
}
|
|
|
|
|
|
BOOL
|
|
PDBExportValidateInterface(
|
|
ULONG intv
|
|
)
|
|
{
|
|
GetFunc( PDBExportValidateInterface, PPDBEXPORTVALIDATEINTERFACE );
|
|
return _PDBExportValidateInterface( intv );
|
|
}
|
|
|
|
|
|
ULONG
|
|
PDBQueryLastError(
|
|
PVOID Pdb,
|
|
LPSTR Error
|
|
)
|
|
{
|
|
GetFunc( PDBQueryLastError, PPDBQUERYLASTERROR );
|
|
return _PDBQueryLastError( Pdb, Error );
|
|
}
|
|
|
|
|
|
ULONG
|
|
PDBQueryInterfaceVersion(
|
|
PVOID Pdb
|
|
)
|
|
{
|
|
GetFunc( PDBQueryInterfaceVersion, PPDBQUERYINTERFACEVERSION );
|
|
return _PDBQueryInterfaceVersion( Pdb );
|
|
}
|
|
|
|
|
|
ULONG
|
|
PDBQueryImplementationVersion(
|
|
PVOID Pdb
|
|
)
|
|
{
|
|
GetFunc( PDBQueryImplementationVersion, PPDBQUERYIMPLEMENTATIONVERSION );
|
|
return _PDBQueryImplementationVersion( Pdb );
|
|
}
|
|
|
|
|
|
LPSTR
|
|
PDBQueryPDBName(
|
|
PVOID Pdb,
|
|
LPSTR PdbName
|
|
)
|
|
{
|
|
GetFunc( PDBQueryPDBName, PPDBQUERYPDBNAME );
|
|
return _PDBQueryPDBName( Pdb, PdbName );
|
|
}
|
|
|
|
|
|
ULONG
|
|
PDBQuerySignature(
|
|
PVOID Pdb
|
|
)
|
|
{
|
|
GetFunc( PDBQuerySignature, PPDBQUERYSIGNATURE );
|
|
return _PDBQuerySignature( Pdb );
|
|
}
|
|
|
|
|
|
ULONG
|
|
PDBQueryAge(
|
|
PVOID Pdb
|
|
)
|
|
{
|
|
GetFunc( PDBQueryAge, PPDBQUERYAGE );
|
|
return _PDBQueryAge( Pdb );
|
|
}
|
|
|
|
|
|
BOOL
|
|
PDBCreateDBI(
|
|
PVOID Pdb,
|
|
LPSTR Target,
|
|
PVOID *Dbi
|
|
)
|
|
{
|
|
GetFunc( PDBCreateDBI, PPDBCREATEDBI );
|
|
return _PDBCreateDBI( Pdb, Target, Dbi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
PDBOpenDBI(
|
|
PVOID Pdb,
|
|
LPSTR Mode,
|
|
LPSTR Target,
|
|
PVOID *Dbi
|
|
)
|
|
{
|
|
GetFunc( PDBOpenDBI, PPDBOPENDBI );
|
|
return _PDBOpenDBI( Pdb, Mode, Target, Dbi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
PDBOpenTpi(
|
|
PVOID Pdb,
|
|
LPSTR Mode,
|
|
PVOID *Tpi
|
|
)
|
|
{
|
|
GetFunc( PDBOpenTpi, PPDBOPENTPI );
|
|
return _PDBOpenTpi( Pdb, Mode, Tpi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
PDBCommit(
|
|
PVOID Pdb
|
|
)
|
|
{
|
|
GetFunc( PDBCommit, PPDBCOMMIT );
|
|
return _PDBCommit( Pdb );
|
|
}
|
|
|
|
|
|
BOOL
|
|
PDBClose(
|
|
PVOID Pdb
|
|
)
|
|
{
|
|
GetFunc( PDBClose, PPDBCLOSE );
|
|
return _PDBClose( Pdb );
|
|
}
|
|
|
|
|
|
ULONG
|
|
DBIQueryInterfaceVersion(
|
|
PVOID Dbi
|
|
)
|
|
{
|
|
GetFunc( DBIQueryInterfaceVersion, PDBIQUERYINTERFACEVERSION );
|
|
return _DBIQueryInterfaceVersion( Dbi );
|
|
}
|
|
|
|
|
|
ULONG
|
|
DBIQueryImplementationVersion(
|
|
PVOID Dbi
|
|
)
|
|
{
|
|
GetFunc( DBIQueryImplementationVersion, PDBIQUERYIMPLEMENTATIONVERSION );
|
|
return _DBIQueryImplementationVersion( Dbi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIOpenMod(
|
|
PVOID Dbi,
|
|
LPSTR ModuleName,
|
|
LPSTR FileName,
|
|
PVOID *Module
|
|
)
|
|
{
|
|
GetFunc( DBIOpenMod, PDBIOPENMOD );
|
|
return _DBIOpenMod( Dbi, ModuleName, FileName, Module );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIDeleteMod(
|
|
PVOID Dbi,
|
|
LPSTR ModuleName
|
|
)
|
|
{
|
|
GetFunc( DBIDeleteMod, PDBIDELETEMOD );
|
|
return _DBIDeleteMod( Dbi, ModuleName );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIQueryNextMod(
|
|
PVOID Dbi,
|
|
PVOID Module,
|
|
PVOID *ModuleNext
|
|
)
|
|
{
|
|
GetFunc( DBIQueryNextMod, PDBIQUERYNEXTMOD );
|
|
return _DBIQueryNextMod( Dbi, Module, ModuleNext );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIOpenGlobals(
|
|
PVOID Dbi,
|
|
PVOID *Gsi
|
|
)
|
|
{
|
|
GetFunc( DBIOpenGlobals, PDBIOPENGLOBALS );
|
|
return _DBIOpenGlobals( Dbi, Gsi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIOpenPublics(
|
|
PVOID Dbi,
|
|
PVOID *Gsi
|
|
)
|
|
{
|
|
GetFunc( DBIOpenPublics, PDBIOPENPUBLICS );
|
|
return _DBIOpenPublics( Dbi, Gsi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIAddSec(
|
|
PVOID Dbi,
|
|
USHORT Isect,
|
|
USHORT Flags,
|
|
LONG Size
|
|
)
|
|
{
|
|
GetFunc( DBIAddSec, PDBIADDSEC );
|
|
return _DBIAddSec( Dbi, Isect, Flags, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIQueryModFromAddr(
|
|
PVOID Dbi,
|
|
USHORT Isect,
|
|
LONG Offset,
|
|
PVOID *Module,
|
|
PUSHORT IsectMod,
|
|
PLONG OffsetMod,
|
|
PLONG Size
|
|
)
|
|
{
|
|
GetFunc( DBIQueryModFromAddr, PDBIQUERYMODFROMADDR );
|
|
return _DBIQueryModFromAddr( Dbi, Isect, Offset, Module, IsectMod, OffsetMod, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIQuerySecMap(
|
|
PVOID Dbi,
|
|
PUCHAR SecMap,
|
|
LONG Size
|
|
)
|
|
{
|
|
GetFunc( DBIQuerySecMap, PDBIQUERYSECMAP );
|
|
return _DBIQuerySecMap( Dbi, SecMap, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIQueryFileInfo(
|
|
PVOID Dbi,
|
|
PUCHAR FileInfo,
|
|
LONG Size
|
|
)
|
|
{
|
|
GetFunc( DBIQueryFileInfo, PDBIQUERYFILEINFO );
|
|
return _DBIQueryFileInfo( Dbi, FileInfo, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIDumpMods(
|
|
PVOID Dbi
|
|
)
|
|
{
|
|
GetFunc( DBIDumpMods, PDBIDUMPMODS );
|
|
_DBIDumpMods( Dbi );
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIDumpSecContribs(
|
|
PVOID Dbi
|
|
)
|
|
{
|
|
GetFunc( DBIDumpSecContribs, PDBIDUMPSECCONTRIBS );
|
|
_DBIDumpSecContribs( Dbi );
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIDumpSecMap(
|
|
PVOID Dbi
|
|
)
|
|
{
|
|
GetFunc( DBIDumpSecMap, PDBIDUMPSECMAP );
|
|
_DBIDumpSecMap( Dbi );
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIClose(
|
|
PVOID Dbi
|
|
)
|
|
{
|
|
GetFunc( DBIClose, PDBICLOSE );
|
|
return _DBIClose( Dbi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
DBIAddThunkMap(
|
|
PVOID Dbi,
|
|
PLONG OffsetThunkMap,
|
|
UINT nThunks,
|
|
LONG SizeOfThunk,
|
|
PVOID SectMap,
|
|
UINT Sects,
|
|
USHORT IsectThunkTable,
|
|
LONG OffsethunkTable
|
|
)
|
|
{
|
|
GetFunc( DBIAddThunkMap, PDBIADDTHUNKMAP );
|
|
return _DBIAddThunkMap(
|
|
Dbi,
|
|
OffsetThunkMap,
|
|
nThunks,
|
|
SizeOfThunk,
|
|
SectMap,
|
|
Sects,
|
|
IsectThunkTable,
|
|
OffsethunkTable
|
|
);
|
|
}
|
|
|
|
|
|
ULONG
|
|
ModQueryInterfaceVersion(
|
|
PVOID Module
|
|
)
|
|
{
|
|
GetFunc( ModQueryInterfaceVersion, PMODQUERYINTERFACEVERSION );
|
|
return _ModQueryInterfaceVersion( Module );
|
|
}
|
|
|
|
|
|
ULONG
|
|
ModQueryImplementationVersion(
|
|
PVOID Module
|
|
)
|
|
{
|
|
GetFunc( ModQueryImplementationVersion, PMODQUERYIMPLEMENTATIONVERSION );
|
|
return _ModQueryImplementationVersion( Module );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModAddTypes(
|
|
PVOID Module,
|
|
PUCHAR Types,
|
|
LONG Size
|
|
)
|
|
{
|
|
GetFunc( ModAddTypes, PMODADDTYPES );
|
|
return _ModAddTypes( Module, Types, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModAddSymbols(
|
|
PVOID Module,
|
|
PUCHAR Symbols,
|
|
LONG Size
|
|
)
|
|
{
|
|
GetFunc( ModAddSymbols, PMODADDSYMBOLS );
|
|
return _ModAddSymbols( Module, Symbols, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModAddPublic(
|
|
PVOID Module,
|
|
LPSTR Public,
|
|
USHORT Isect,
|
|
LONG Offset
|
|
)
|
|
{
|
|
GetFunc( ModAddPublic, PMODADDPUBLIC );
|
|
return _ModAddPublic( Module, Public, Isect, Offset );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModAddLines(
|
|
PVOID Module,
|
|
LPSTR Source,
|
|
USHORT Isect,
|
|
LONG Offset,
|
|
LONG Size,
|
|
USHORT LineStart,
|
|
PUCHAR Coff,
|
|
LONG SizeCoff
|
|
)
|
|
{
|
|
GetFunc( ModAddLines, PMODADDLINES );
|
|
return _ModAddLines(
|
|
Module,
|
|
Source,
|
|
Isect,
|
|
Offset,
|
|
Size,
|
|
LineStart,
|
|
Coff,
|
|
SizeCoff
|
|
);
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModAddSecContrib(
|
|
PVOID Module,
|
|
USHORT Isect,
|
|
LONG Offset,
|
|
LONG Size
|
|
)
|
|
{
|
|
GetFunc( ModAddSecContrib, PMODADDSECCONTRIB );
|
|
return _ModAddSecContrib( Module, Isect, Offset, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModQueryCBName(
|
|
PVOID Module,
|
|
PLONG Size
|
|
)
|
|
{
|
|
GetFunc( ModQueryCBName, PMODQUERYCBNAME );
|
|
return _ModQueryCBName( Module, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModQueryName(
|
|
PVOID Module,
|
|
LPSTR Name,
|
|
PLONG Size
|
|
)
|
|
{
|
|
GetFunc( ModQueryName, PMODQUERYNAME );
|
|
return _ModQueryName( Module, Name, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModQuerySymbols(
|
|
PVOID Module,
|
|
LPSTR Symbols,
|
|
PLONG Size
|
|
)
|
|
{
|
|
GetFunc( ModQuerySymbols, PMODQUERYSYMBOLS );
|
|
return _ModQuerySymbols( Module, Symbols, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModQueryLines(
|
|
PVOID Module,
|
|
LPSTR Lines,
|
|
PLONG Size
|
|
)
|
|
{
|
|
GetFunc( ModQueryLines, PMODQUERYLINES );
|
|
return _ModQueryLines( Module, Lines, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModSetPvClient(
|
|
PVOID Module,
|
|
PVOID Client
|
|
)
|
|
{
|
|
GetFunc( ModSetPvClient, PMODSETPVCLIENT );
|
|
return _ModSetPvClient( Module, Client );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModGetPvClient(
|
|
PVOID Module,
|
|
PVOID *Client
|
|
)
|
|
{
|
|
GetFunc( ModGetPvClient, PMODGETPVCLIENT );
|
|
return _ModGetPvClient( Module, Client );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModQuerySecContrib(
|
|
PVOID Module,
|
|
PUSHORT Isect,
|
|
PLONG Offset,
|
|
PLONG Size
|
|
)
|
|
{
|
|
GetFunc( ModQuerySecContrib, PMODQUERYSECCONTRIB );
|
|
return _ModQuerySecContrib( Module, Isect, Offset, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModQueryImod(
|
|
PVOID Module,
|
|
PUSHORT Imod
|
|
)
|
|
{
|
|
GetFunc( ModQueryImod, PMODQUERYIMOD );
|
|
return _ModQueryImod( Module, Imod );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModQueryDBI(
|
|
PVOID Module,
|
|
PVOID *Dbi
|
|
)
|
|
{
|
|
GetFunc( ModQueryDBI, PMODQUERYDBI );
|
|
return _ModQueryDBI( Module, Dbi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
ModClose(
|
|
PVOID Module
|
|
)
|
|
{
|
|
GetFunc( ModClose, PMODCLOSE );
|
|
return _ModClose( Module );
|
|
}
|
|
|
|
|
|
ULONG
|
|
TypesQueryInterfaceVersion(
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesQueryInterfaceVersion, PTYPESQUERYINTERFACEVERSION );
|
|
return _TypesQueryInterfaceVersion( Tpi );
|
|
}
|
|
|
|
|
|
ULONG
|
|
TypesQueryImplementationVersion(
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesQueryImplementationVersion, PTYPESQUERYIMPLEMENTATIONVERSION );
|
|
return _TypesQueryImplementationVersion( Tpi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesQueryTiForCVRecord(
|
|
PVOID Tpi,
|
|
PUCHAR Cv,
|
|
PUSHORT Ti
|
|
)
|
|
{
|
|
GetFunc( TypesQueryTiForCVRecord, PTYPESQUERYTIFORCVRECORD );
|
|
return _TypesQueryTiForCVRecord( Tpi, Cv, Ti );
|
|
}
|
|
|
|
BOOL
|
|
TypesQueryTiForCVRecordEx( // VC 4.2
|
|
PVOID Tpi,
|
|
PUCHAR Cv,
|
|
PULONG Ti
|
|
)
|
|
{
|
|
GetFunc( TypesQueryTiForCVRecordEx, PTYPESQUERYTIFORCVRECORDEX );
|
|
return _TypesQueryTiForCVRecordEx( Tpi, Cv, Ti );
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesQueryCVRecordForTi(
|
|
PVOID Tpi,
|
|
USHORT Ti,
|
|
PUCHAR Cv,
|
|
PLONG Size
|
|
)
|
|
{
|
|
GetFunc( TypesQueryCVRecordForTi, PTYPESQUERYCVRECORDFORTI );
|
|
return _TypesQueryCVRecordForTi( Tpi, Ti, Cv, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesQueryCVRecordForTiEx( // VC 4.2
|
|
PVOID Tpi,
|
|
ULONG Ti,
|
|
PUCHAR Cv,
|
|
PLONG Size
|
|
)
|
|
{
|
|
GetFunc( TypesQueryCVRecordForTiEx, PTYPESQUERYCVRECORDFORTIEX );
|
|
return _TypesQueryCVRecordForTiEx( Tpi, Ti, Cv, Size );
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesQueryPbCVRecordForTi(
|
|
PVOID Tpi,
|
|
USHORT Ti,
|
|
PUCHAR Cv
|
|
)
|
|
{
|
|
GetFunc( TypesQueryPbCVRecordForTi, PTYPESQUERYPBCVRECORDFORTI );
|
|
return _TypesQueryPbCVRecordForTi( Tpi, Ti, Cv );
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesQueryPbCVRecordForTiEx( // VC 4.2
|
|
PVOID Tpi,
|
|
ULONG Ti,
|
|
PUCHAR Cv
|
|
)
|
|
{
|
|
GetFunc( TypesQueryPbCVRecordForTiEx, PTYPESQUERYPBCVRECORDFORTIEX );
|
|
return _TypesQueryPbCVRecordForTiEx( Tpi, Ti, Cv );
|
|
}
|
|
|
|
|
|
USHORT
|
|
TypesQueryTiMin(
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesQueryTiMin, PTYPESQUERYTIMIN );
|
|
return _TypesQueryTiMin( Tpi );
|
|
}
|
|
|
|
|
|
ULONG
|
|
TypesQueryTiMinEx( // VC 4.2
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesQueryTiMinEx, PTYPESQUERYTIMINEX );
|
|
return _TypesQueryTiMinEx( Tpi );
|
|
}
|
|
|
|
|
|
USHORT
|
|
TypesQueryTiMac(
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesQueryTiMac, PTYPESQUERYTIMAC );
|
|
return _TypesQueryTiMac( Tpi );
|
|
}
|
|
|
|
|
|
ULONG
|
|
TypesQueryTiMacEx( // VC 4.2
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesQueryTiMac, PTYPESQUERYTIMAC );
|
|
return _TypesQueryTiMac( Tpi );
|
|
}
|
|
|
|
|
|
LONG
|
|
TypesQueryCb(
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesQueryCb, PTYPESQUERYCB );
|
|
return _TypesQueryCb( Tpi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesClose(
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesClose, PTYPESCLOSE );
|
|
return _TypesClose( Tpi );
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesCommit( // VC 4.0
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesCommit, PTYPESCOMMIT );
|
|
return _TypesCommit( Tpi );
|
|
}
|
|
|
|
BOOL
|
|
TypesQueryTiForUDT( // VC 4.0
|
|
PVOID Tpi,
|
|
PCHAR Cv,
|
|
BOOL Case,
|
|
PUSHORT Ti)
|
|
{
|
|
GetFunc( TypesQueryTiForUDT, PTYPESQUERYTIFORUDT );
|
|
return _TypesQueryTiForUDT(Tpi, Cv, Case, Ti);
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesQueryTiForUDTEx( // VC 4.2
|
|
PVOID Tpi,
|
|
PCHAR Cv,
|
|
BOOL Case,
|
|
PULONG Ti)
|
|
{
|
|
GetFunc( TypesQueryTiForUDTEx, PTYPESQUERYTIFORUDTEX );
|
|
return _TypesQueryTiForUDTEx(Tpi, Cv, Case, Ti);
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesSupportQueryTiForUDT( // VC 4.0
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesSupportQueryTiForUDT, PTYPESSUPPORTQUERYTIFORUDT );
|
|
return _TypesSupportQueryTiForUDT(Tpi);
|
|
}
|
|
|
|
|
|
BOOL
|
|
TypesfIs16bitTypePool( // VC 4.2
|
|
PVOID Tpi
|
|
)
|
|
{
|
|
GetFunc( TypesfIs16bitTypePool, PTYPESFIS16BITTYPEPOOL );
|
|
return _TypesfIs16bitTypePool(Tpi);
|
|
}
|
|
|
|
|
|
PUCHAR
|
|
GSINextSym(
|
|
PVOID Gsi,
|
|
PUCHAR Sym
|
|
)
|
|
{
|
|
GetFunc( GSINextSym, PGSINEXTSYM );
|
|
return _GSINextSym( Gsi, Sym );
|
|
}
|
|
|
|
|
|
PUCHAR
|
|
GSIHashSym(
|
|
PVOID Gsi,
|
|
LPSTR Name,
|
|
PUCHAR Sym
|
|
)
|
|
{
|
|
GetFunc( GSIHashSym, PGSIHASHSYM );
|
|
return _GSIHashSym( Gsi, Name, Sym );
|
|
}
|
|
|
|
|
|
PUCHAR
|
|
GSINearestSym(
|
|
PVOID Gsi,
|
|
USHORT Isect,
|
|
LONG Offset,
|
|
PLONG Displacement
|
|
)
|
|
{
|
|
GetFunc( GSINearestSym, PGSINEARESTSYM );
|
|
return _GSINearestSym( Gsi, Isect, Offset, Displacement );
|
|
}
|
|
|
|
|
|
BOOL
|
|
GSIClose(
|
|
PVOID Gsi
|
|
)
|
|
{
|
|
GetFunc( GSIClose, PGSICLOSE );
|
|
return _GSIClose( Gsi );
|
|
}
|