mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 00:43:11 +00:00
[NTDLL] Check the process manifest at startup for a compatibility section.
This commit is contained in:
parent
e195199a51
commit
d49004352f
5 changed files with 149 additions and 5 deletions
43
sdk/include/reactos/compat_undoc.h
Normal file
43
sdk/include/reactos/compat_undoc.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
#ifndef COMPAT_UNDOC_H
|
||||
#define COMPAT_UNDOC_H
|
||||
|
||||
|
||||
typedef struct _ReactOS_ShimData
|
||||
{
|
||||
DWORD dwReserved1[130];
|
||||
DWORD dwSize;
|
||||
DWORD dwMagic;
|
||||
DWORD dwReserved2[242];
|
||||
DWORD dwRosProcessCompatVersion;
|
||||
} ReactOS_ShimData;
|
||||
|
||||
|
||||
#define REACTOS_SHIMDATA_MAGIC 0xAC0DEDAB
|
||||
|
||||
#ifndef WINVER_VISTA
|
||||
#define WINVER_VISTA 0x0600
|
||||
#define WINVER_WIN7 0x0601
|
||||
#define WINVER_WIN8 0x0602
|
||||
#define WINVER_WIN81 0x0603
|
||||
#define WINVER_WIN10 0x0a00
|
||||
#endif
|
||||
|
||||
static
|
||||
inline
|
||||
DWORD RosGetProcessCompatVersion(VOID)
|
||||
{
|
||||
static DWORD g_CompatVersion = 0xffffffff;
|
||||
if (g_CompatVersion == 0xffffffff)
|
||||
{
|
||||
ReactOS_ShimData* pShimData = (ReactOS_ShimData*)NtCurrentPeb()->pShimData;
|
||||
if (pShimData && pShimData->dwMagic == REACTOS_SHIMDATA_MAGIC &&
|
||||
pShimData->dwSize == sizeof(ReactOS_ShimData))
|
||||
{
|
||||
g_CompatVersion = pShimData->dwRosProcessCompatVersion;
|
||||
}
|
||||
}
|
||||
return g_CompatVersion != 0xffffffff ? g_CompatVersion : 0;
|
||||
}
|
||||
|
||||
|
||||
#endif // COMPAT_UNDOC_H
|
12
sdk/include/reactos/compatguid_undoc.h
Normal file
12
sdk/include/reactos/compatguid_undoc.h
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef COMPATGUID_UNDOC_H
|
||||
#define COMPATGUID_UNDOC_H
|
||||
|
||||
|
||||
DEFINE_GUID(COMPAT_GUID_VISTA, 0xe2011457, 0x1546, 0x43c5, 0xa5, 0xfe, 0x00, 0x8d, 0xee, 0xe3, 0xd3, 0xf0);
|
||||
DEFINE_GUID(COMPAT_GUID_WIN7, 0x35138b9a, 0x5d96, 0x4fbd, 0x8e, 0x2d, 0xa2, 0x44, 0x02, 0x25, 0xf9, 0x3a);
|
||||
DEFINE_GUID(COMPAT_GUID_WIN8, 0x4a2f28e3, 0x53b9, 0x4441, 0xba, 0x9c, 0xd6, 0x9d, 0x4a, 0x4a, 0x6e, 0x38);
|
||||
DEFINE_GUID(COMPAT_GUID_WIN81, 0x1f676c76, 0x80e1, 0x4239, 0x95, 0xbb, 0x83, 0xd0, 0xf6, 0xd0, 0xda, 0x78);
|
||||
DEFINE_GUID(COMPAT_GUID_WIN10, 0x8e0f7a12, 0xbfb3, 0x4fe8, 0xb9, 0xa5, 0x48, 0xfd, 0x50, 0xa1, 0x5a, 0x9a);
|
||||
|
||||
|
||||
#endif // COMPATGUID_UNDOC_H
|
Loading…
Add table
Add a link
Reference in a new issue