[NTDLL] Check the process manifest at startup for a compatibility section.

This commit is contained in:
Mark Jansen 2018-01-13 21:32:48 +01:00
parent e195199a51
commit d49004352f
No known key found for this signature in database
GPG key ID: B39240EE84BEAE8B
5 changed files with 149 additions and 5 deletions

View 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

View 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