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

51 lines
1.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
////////////////////////////////////////////////////////////////////////////////////
//
// File: shim.h
//
// History: May-99 clupu Created.
// Aug-99 v-johnwh Various bug fixes.
// 23-Nov-99 markder Support for multiple shim DLLs, chaining
// of hooks. General clean-up.
// 11-Feb-00 markder Reverted to W2K shipped shim structures.
//
// Desc: Contains all structure and function definitions for the shim mechanism.
//
////////////////////////////////////////////////////////////////////////////////////
#ifndef __SHIM_H__
#define __SHIM_H__
struct tagHOOKAPI;
typedef struct tagHOOKAPIEX {
DWORD dwShimID;
struct tagHOOKAPI *pTopOfChain;
struct tagHOOKAPI *pNext;
} HOOKAPIEX, *PHOOKAPIEX;
typedef struct tagHOOKAPI {
char* pszModule; // the name of the module
char* pszFunctionName; // the name of the API in the module
PVOID pfnNew; // pointer to the new stub API
PVOID pfnOld; // pointer to the old API
DWORD dwFlags; // used internally - important info about status
union {
struct tagHOOKAPI *pNextHook; // used internally - (obsolete -- old mechanism)
PHOOKAPIEX pHookEx; // used internally - pointer to an internal extended info struct
};
} HOOKAPI, *PHOOKAPI;
/*
* If the hook DLL ever patches LoadLibraryA/W it must call PatchNewModules
* so that the shim knows to patch any new loaded DLLs
*/
typedef VOID (*PFNPATCHNEWMODULES)(VOID);
typedef PHOOKAPI (*PFNGETHOOKAPIS)(LPSTR pszCmdLine,
PFNPATCHNEWMODULES pfnPatchNewModules,
DWORD* pdwHooksCount);
#define SHIM_COMMAND_LINE_MAX_BUFFER 1024
#endif