windows-nt/Source/XPSP1/NT/public/internal/windows/inc/shimpatch.h

74 lines
2.5 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1993-1998
//
// File: ldrpatch.h
//
// Contents: Patch data structures
//
// History: 13-Oct-99 v-johnwh created
// 15-Feb-00 markder Changed CHARs to WCHARs
//
//---------------------------------------------------------------------------
#ifndef _LDRPATCH_H_
#define _LDRPATCH_H_
typedef struct _PATCHOP
{
DWORD dwOpcode; // opcode to be performed
DWORD dwNextOpcode; // relative offset to next opcode
#pragma warning( disable : 4200 )
BYTE data[]; //data for this operation type is dependent on the operation code
#pragma warning( default : 4200 )
} PATCHOP, *PPATCHOP;
typedef struct _RELATIVE_MODULE_ADDRESS
{
DWORD address; //relative address from beginning of loaded module
BYTE reserved[3]; //reserved for system use
WCHAR moduleName[32]; //module name for this address.
} RELATIVE_MODULE_ADDRESS, *PRELATIVE_MODULE_ADDRESS;
typedef struct _PATCHWRITEDATA
{
DWORD dwSizeData; //size of patch data in bytes
RELATIVE_MODULE_ADDRESS rva; //relative address where this patch data is to be applied.
#pragma warning( disable : 4200 )
BYTE data[]; //patch data bytes.
#pragma warning( default : 4200 )
} PATCHWRITEDATA, *PPATCHWRITEDATA;
typedef struct _PATCHMATCHDATA
{
DWORD dwSizeData; //size of matching data data in bytes
RELATIVE_MODULE_ADDRESS rva; //relative address where this patch data is to be verified.
#pragma warning( disable : 4200 )
BYTE data[]; //Matching data bytes.
#pragma warning( default : 4200 )
} PATCHMATCHDATA, *PPATCHMATCHDATA;
typedef struct _SETACTIVATEADDRESS
{
RELATIVE_MODULE_ADDRESS rva; //relative address where this patch data is to be applied.
} SETACTIVATEADDRESS, *PSETACTIVATEADDRESS;
typedef struct _HOOKPATCHINFO
{
DWORD dwHookAddress; // Address of a hooked function
PSETACTIVATEADDRESS pData; // Pointer to the real patch data
PVOID pThunkAddress; // Pointer to the call thunk
struct _HOOKPATCHINFO *pNextHook;
} HOOKPATCHINFO, *PHOOKPATCHINFO;
typedef enum _PATCHOPCODES
{
PEND = 0, //no more opcodes
PSAA, //Set Activate Address, SETACTIVATEADDRESS
PWD, //Patch Write Data, PATCHWRITEDATA
PNOP, //No Operation
PMAT, //Patch match the matching bytes but do not replace the bytes.
} PATCHOPCODES;
#endif //_LDRPATCH_H_