/*++ Copyright (c) 1995 Microsoft Corporation Module Name: apidllp.h Abstract: Common header file for APIDLL data structures. Author: Wesley Witt (wesw) 12-July-1995 Environment: User Mode --*/ extern "C" { #include } #include #include #include #include #include #include #include #include "apimon.h" #if defined(_M_ALPHA) #define FRAME_SIZE 128 #else #define FRAME_SIZE 96 #endif #define MAX_FRAMES 512 #define MAX_STACK_SIZE (MAX_FRAMES * FRAME_SIZE) typedef struct _THREAD_STACK { DWORD_PTR Pointer; DWORD ThreadNum; CHAR Body[MAX_STACK_SIZE]; } THREAD_STACK, *PTHREAD_STACK; extern "C" { typedef DWORD (__stdcall *PGETCURRENTTHREADID)(VOID); typedef LPVOID (__stdcall *PTLSGETVALUE)(DWORD); typedef BOOL (__stdcall *PTLSSETVALUE)(DWORD,LPVOID); typedef LPVOID (__stdcall *PVIRTUALALLOC)(LPVOID,DWORD,DWORD,DWORD); typedef DWORD (__stdcall *PGETLASTERROR)(VOID); typedef VOID (__stdcall *PSETLASTERROR)(DWORD); typedef BOOL (__stdcall *PQUERYPERFORMANCECOUNTER)(LARGE_INTEGER *); extern PVOID MemPtr; extern LPDWORD ApiCounter; extern LPDWORD ApiTraceEnabled; extern DWORD TlsReEnter; extern DWORD TlsStack; extern PTLSGETVALUE pTlsGetValue; extern PTLSSETVALUE pTlsSetValue; extern PGETLASTERROR pGetLastError; extern PSETLASTERROR pSetLastError; extern PQUERYPERFORMANCECOUNTER pQueryPerformanceCounter; extern PVIRTUALALLOC pVirtualAlloc; extern DWORD ThunkOverhead; extern DWORD ThunkCallOverhead; } enum { APITYPE_NORMAL, APITYPE_LOADLIBRARYA, APITYPE_LOADLIBRARYW, APITYPE_FREELIBRARY, APITYPE_REGISTERCLASSA, APITYPE_REGISTERCLASSW, APITYPE_GETPROCADDRESS, APITYPE_SETWINDOWLONG, APITYPE_WNDPROC }; extern "C" void ApiMonThunk( void ); extern "C" void ApiMonThunkComplete( void ); extern "C" VOID HandleDynamicDllLoadA( ULONG_PTR DllAddress, LPSTR DllName ); extern "C" VOID HandleDynamicDllLoadW( ULONG_PTR DllAddress, LPWSTR DllName ); extern "C" VOID HandleRegisterClassA( WNDCLASSA *pWndClassA ); extern "C" VOID HandleRegisterClassW( WNDCLASSW *pWndClassW ); extern "C" LONG_PTR HandleSetWindowLong( HWND hWindow, LONG lOffset, LPARAM lValue ); extern "C" ULONG_PTR HandleGetProcAddress( ULONG_PTR ProcAddress ); extern "C" void __cdecl dprintf( char *format, ... ); extern "C" BOOL PentiumGetPerformanceCounter( PLARGE_INTEGER Counter ); LPSTR UnDname( LPSTR sym, LPSTR undecsym, DWORD bufsize ); PUCHAR CreateMachApiThunk( PULONG_PTR IatAddress, PUCHAR Text, PDLL_INFO DllInfo, PAPI_INFO ApiInfo ); extern "C" VOID ApiTrace( PAPI_INFO ApiInfo, #ifdef _M_ALPHA DWORDLONG Arg[MAX_TRACE_ARGS], #else ULONG Arg[MAX_TRACE_ARGS], #endif ULONG ReturnValue, ULONG Caller, DWORDLONG EnterTime, DWORDLONG ExitTime, ULONG LastError ); extern SYSTEM_INFO SystemInfo;