84 lines
2.5 KiB
C
84 lines
2.5 KiB
C
/*++
|
|
|
|
Copyright (C) Microsoft Corporation, 1992 - 1999
|
|
|
|
Module Name:
|
|
|
|
certextp.h
|
|
|
|
Abstract:
|
|
|
|
Common header file for NTSDEXTS component source files.
|
|
Modified version of ntsdextp.h
|
|
|
|
Author:
|
|
|
|
Steve Wood (stevewo) 21-Feb-1995 (original ntsdextp.h)
|
|
Phil Hallin (philh) 08-Jun-1998 (modified for certextp.h)
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include <windows.h>
|
|
//#include <ntsdexts.h>
|
|
|
|
#define NOEXTAPI
|
|
#include <wdbgexts.h>
|
|
#undef DECLARE_API
|
|
|
|
#define move(dst, src)\
|
|
__try {\
|
|
ReadMemory((LPVOID) (src), &(dst), sizeof(dst), NULL);\
|
|
} __except (EXCEPTION_EXECUTE_HANDLER) {\
|
|
return;\
|
|
}
|
|
#define moveBlock(dst, src, size)\
|
|
__try {\
|
|
ReadMemory((LPVOID) (src), &(dst), (size), NULL);\
|
|
} __except (EXCEPTION_EXECUTE_HANDLER) {\
|
|
return;\
|
|
}
|
|
|
|
|
|
#ifdef __cplusplus
|
|
#define CPPMOD extern "C"
|
|
#else
|
|
#define CPPMOD
|
|
#endif
|
|
|
|
#define DECLARE_API(s) \
|
|
CPPMOD VOID \
|
|
s( \
|
|
HANDLE hCurrentProcess, \
|
|
HANDLE hCurrentThread, \
|
|
DWORD dwCurrentPc, \
|
|
PWINDBG_EXTENSION_APIS lpExtensionApis, \
|
|
LPSTR lpArgumentString \
|
|
)
|
|
|
|
#define INIT_API() { \
|
|
ExtensionApis = *lpExtensionApis; \
|
|
ExtensionCurrentProcess = hCurrentProcess; \
|
|
}
|
|
|
|
#define dprintf (ExtensionApis.lpOutputRoutine)
|
|
#define GetExpression (ExtensionApis.lpGetExpressionRoutine)
|
|
#define GetSymbol (ExtensionApis.lpGetSymbolRoutine)
|
|
#define Disassm (ExtensionApis.lpDisasmRoutine)
|
|
#define CheckControlC (ExtensionApis.lpCheckControlCRoutine)
|
|
//#define ReadMemory(a,b,c,d) ReadProcessMemory( ExtensionCurrentProcess, (LPCVOID)(a), (b), (c), (d) )
|
|
#define ReadMemory(a,b,c,d) \
|
|
((ExtensionApis.nSize == sizeof(WINDBG_OLD_EXTENSION_APIS)) ? \
|
|
ReadProcessMemory( ExtensionCurrentProcess, (LPCVOID)(a), (b), (c), (d) ) \
|
|
: ExtensionApis.lpReadProcessMemoryRoutine( (ULONG)(ULONG_PTR)(a), (b), (c), (d) ))
|
|
|
|
//#define WriteMemory(a,b,c,d) WriteProcessMemory( ExtensionCurrentProcess, (LPVOID)(a), (LPVOID)(b), (c), (d) )
|
|
#define WriteMemory(a,b,c,d) \
|
|
((ExtensionApis.nSize == sizeof(WINDBG_OLD_EXTENSION_APIS)) ? \
|
|
WriteProcessMemory( ExtensionCurrentProcess, (LPVOID)(a), (LPVOID)(b), (c), (d) ) \
|
|
: ExtensionApis.lpWriteProcessMemoryRoutine( (ULONG)(a), (LPVOID)(b), (c), (d) ))
|
|
|
|
extern WINDBG_EXTENSION_APIS ExtensionApis;
|
|
extern HANDLE ExtensionCurrentProcess;
|