windows-nt/Source/XPSP1/NT/sdktools/profiler/clevel.h
2020-09-26 16:20:57 +08:00

52 lines
1.1 KiB
C

#ifndef _CLEVEL_H_
#define _CLEVEL_H_
//
// Constant declarations
//
//
// Structure definitions
//
typedef struct _CALLRETSTUB
{
CHAR PUSHDWORD[5]; //push xxxxxxxx (68 dword)
CHAR JMPDWORD[6]; //jmp dword ptr [xxxxxxxx] (ff 25 dword address)
} CALLRETSTUB, *PCALLRETSTUB;
typedef struct _FIXUPRETURN
{
BYTE PUSHAD; //pushad (60)
BYTE PUSHFD; //pushfd (9c)
BYTE PUSHDWORDESPPLUS24[4]; //push dword ptr [esp+24] (ff 74 24 24)
BYTE CALLROUTINE[6]; //call [address] (ff15 dword address)
BYTE MOVESPPLUS24EAX[4]; //mov [esp+0x24],eax (89 44 24 24)
BYTE POPFD; //popfd (9d)
BYTE POPAD; //popad (61)
BYTE RET; //ret (c3)
} FIXUPRETURN, *PFIXUPRETURN;
typedef struct _CALLERINFO
{
DWORD dwIdentifier;
DWORD dwCallLevel;
PVOID pCallRetStub;
PVOID pReturn;
struct _CALLERINFO *pNextChain;
} CALLERINFO, *PCALLERINFO;
//
// Function definitions
//
BOOL
PushCaller(PVOID ptfInfo,
PVOID pEsp);
PVOID
PopCaller(DWORD dwIdentifier);
PCALLRETSTUB
AllocateReturnStub(PVOID ptfInfo);
#endif //_CLEVEL_H_