2 * PROJECT: ReactOS Application compatibility module
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Shim engine structures
5 * COPYRIGHT: Copyright 2017 Mark Jansen (mark.jansen@reactos.org)
11 /* This header is ReactOS specific */
13 /* Structure that allows dynamic growing.
14 Be aware, the data may move! */
23 typedef struct _SHIMINFO
*PSHIMINFO
;
24 typedef struct _SHIMMODULE
*PSHIMMODULE
;
26 /* Shims know this structure as HOOKAPI, with 2 reserved members (the last 2). */
27 typedef struct tagHOOKAPIEX
31 PVOID ReplacementFunction
;
32 PVOID OriginalFunction
;
35 } HOOKAPIEX
, *PHOOKAPIEX
;
37 C_ASSERT(sizeof(HOOKAPIEX
) == sizeof(HOOKAPI
));
38 C_ASSERT(offsetof(HOOKAPIEX
, pShimInfo
) == offsetof(HOOKAPI
, Reserved
));
40 typedef struct _INEXCLUDE
42 UNICODE_STRING Module
;
44 } INEXCLUDE
, *PINEXCLUDE
;
46 typedef struct _SHIMINFO
51 PSHIMMODULE pShimModule
;
52 ARRAY InExclude
; /* INEXCLUDE */
53 } SHIMINFO
, *PSHIMINFO
;
55 typedef struct _SHIMMODULE
60 PHOOKAPIEX (WINAPI
* pGetHookAPIs
)(LPCSTR szCommandLine
, LPCWSTR wszShimName
, PDWORD pdwHookCount
);
61 BOOL (WINAPI
* pNotifyShims
)(DWORD fdwReason
, PVOID ptr
);
63 ARRAY EnabledShims
; /* PSHIMINFO */
64 } SHIMMODULE
, *PSHIMMODULE
;
66 typedef struct _HOOKMODULEINFO
71 ARRAY HookApis
; /* PHOOKAPIEX */
73 } HOOKMODULEINFO
, *PHOOKMODULEINFO
;
75 typedef struct _FLAGINFO
77 ULARGE_INTEGER AppCompatFlags
;
78 ULARGE_INTEGER AppCompatFlagsUser
;
79 ULONG ProcessParameters_Flags
;
80 } FLAGINFO
, *PFLAGINFO
;
83 #if SDBAPI_DEBUG_ALLOC
85 LPVOID
SdbpAlloc(SIZE_T size
, int line
, const char* file
);
86 LPVOID
SdbpReAlloc(LPVOID mem
, SIZE_T size
, SIZE_T oldSize
, int line
, const char* file
);
87 VOID
SdbpFree(LPVOID mem
, int line
, const char* file
);
89 #define SeiAlloc(size) SdbpAlloc(size, __LINE__, __FILE__)
90 #define SeiReAlloc(mem, size, oldSize) SdbpReAlloc(mem, size, oldSize, __LINE__, __FILE__)
91 #define SeiFree(mem) SdbpFree(mem, __LINE__, __FILE__)
95 LPVOID
SdbpAlloc(SIZE_T size
);
96 LPVOID
SdbpReAlloc(LPVOID mem
, SIZE_T size
, SIZE_T oldSize
);
97 VOID
SdbpFree(LPVOID mem
);
99 #define SeiAlloc(size) SdbpAlloc(size)
100 #define SeiReAlloc(mem, size, oldSize) SdbpReAlloc(mem, size, oldSize)
101 #define SeiFree(mem) SdbpFree(mem)