|
|
//----------------------------------------------------------------------------
//
// Extension DLL support.
//
// Copyright (C) Microsoft Corporation, 1997-2002.
//
//----------------------------------------------------------------------------
#ifndef _EXTS_H_
#define _EXTS_H_
#define OPTION_NOEXTWARNING 0x00000001
#define OPTION_NOVERSIONCHECK 0x00000002
#define OPTION_COUNT 2
extern DWORD g_EnvDbgOptions;
#define WOW64EXTS_FLUSH_CACHE 0
#define WOW64EXTS_GET_CONTEXT 1
#define WOW64EXTS_SET_CONTEXT 2
#define WOW64EXTS_FLUSH_CACHE_WITH_HANDLE 3
typedef VOID (*WOW64EXTSPROC)(ULONG64, ULONG64, ULONG64, ULONG64);
typedef ULONG (CALLBACK* WMI_FORMAT_TRACE_DATA) (PDEBUG_CONTROL Ctrl, ULONG Mask, ULONG DataLen, PVOID Data);
extern ULONG64 g_ExtThread;
extern WOW64EXTSPROC g_Wow64exts; extern WMI_FORMAT_TRACE_DATA g_WmiFormatTraceData;
extern DEBUG_SCOPE g_ExtThreadSavedScope; extern BOOL g_ExtThreadScopeSaved;
extern WINDBG_EXTENSION_APIS64 g_WindbgExtensions64; extern WINDBG_EXTENSION_APIS32 g_WindbgExtensions32; extern WINDBG_OLDKD_EXTENSION_APIS g_KdExtensions;
DebugClient* FindExtClient(void);
void ParseBangCmd(DebugClient* Client, BOOL BuiltInOnly);
enum ExtensionType { NTSD_EXTENSION_TYPE = 1, DEBUG_EXTENSION_TYPE, WINDBG_EXTENSION_TYPE, WINDBG_OLDKD_EXTENSION_TYPE, }; typedef struct _EXTDLL { struct _EXTDLL *Next; HINSTANCE Dll; EXT_API_VERSION ApiVersion;
BOOL UserLoaded; ExtensionType ExtensionType; PDEBUG_EXTENSION_NOTIFY Notify; PDEBUG_EXTENSION_UNINITIALIZE Uninit;
PWINDBG_EXTENSION_DLL_INIT64 Init; PWINDBG_EXTENSION_API_VERSION ApiVersionRoutine; PWINDBG_CHECK_VERSION CheckVersionRoutine;
TargetInfo* Target; // Array extends to contain the full name.
char Name[1];
} EXTDLL;
extern EXTDLL* g_ExtDlls;
LONG ExtensionExceptionFilter( struct _EXCEPTION_POINTERS *ExceptionInfo, PCSTR Module, PCSTR Func );
EXTDLL* AddExtensionDll(char *Name, BOOL UserLoaded, TargetInfo* Target, char **End); BOOL LoadExtensionDll(TargetInfo* Target, EXTDLL *Ext); void DeferExtensionDll(EXTDLL *Match, BOOL Verbose); void UnloadExtensionDll(EXTDLL *Match, BOOL Verbose); void UnloadTargetExtensionDlls(TargetInfo* Target); void DeferAllExtensionDlls(void);
BOOL CallAnyExtension(DebugClient* Client, EXTDLL* Ext, PSTR Function, PCSTR Arguments, BOOL ModuleSpecified, BOOL ShowWarnings, HRESULT* ExtStatus);
void OutputModuleIdInfo(HMODULE Mod, PSTR ModFile, LPEXT_API_VERSION ApiVer); void OutputExtensions(DebugClient* Client, BOOL Versions);
void NotifyExtensions(ULONG Notify, ULONG64 Argument);
void ReadDebugOptions (BOOL fQuiet, char * pszOptionsStr);
VOID LoadWow64ExtsIfNeeded(ULONG64 Process);
#endif // #ifndef _EXTS_H_
|