ReactOS 0.4.17-dev-1281-g065abb3
versionlie.c File Reference
#include <ntoskrnl.h>
#include <initguid.h>
#include <debug.h>
Include dependency graph for versionlie.c:

Go to the source code of this file.

Classes

struct  _KSE_VERSION_LIE
 

Macros

#define NDEBUG
 

Typedefs

typedef struct _KSE_VERSION_LIE KSE_VERSION_LIE
 
typedef struct _KSE_VERSION_LIE * PKSE_VERSION_LIE
 

Functions

 DEFINE_GUID (KseWin2k3VersionLieGuid, 0xb120afe6, 0x7bdd, 0x4672, 0xa9, 0x90, 0x00, 0xb1, 0x3d, 0x50, 0x78, 0x05)
 
static NTSTATUS KseCommonRtlGetVersion (IN OUT PRTL_OSVERSIONINFOW lpVersionInformation, IN PKSE_VERSION_LIE VersionLie)
 
static BOOLEAN KseCommonPsGetVersion (OUT PULONG MajorVersion OPTIONAL, OUT PULONG MinorVersion OPTIONAL, OUT PULONG BuildNumber OPTIONAL, OUT PUNICODE_STRING CSDVersion OPTIONAL, IN PKSE_VERSION_LIE VersionLie)
 
static NTSTATUS NTAPI KseWin2k3RtlGetVersion (IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
 
static BOOLEAN NTAPI KseWin2k3PsGetVersion (OUT PULONG MajorVersion OPTIONAL, OUT PULONG MinorVersion OPTIONAL, OUT PULONG BuildNumber OPTIONAL, OUT PUNICODE_STRING CSDVersion OPTIONAL)
 
NTSTATUS NTAPI KseVersionLieInitialize (VOID)
 

Variables

static KSE_VERSION_LIE KseWin2k3VersionLie = { 5, 2, 3790, 2, RTL_CONSTANT_STRING(L"Service Pack 2") }
 
static KSE_HOOK KseWin2k3VersionLieHooksNT []
 
static KSE_HOOK_COLLECTION KseWin2k3VersionLieShimCollections []
 
static KSE_SHIM KseVersionLieShims []
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 19 of file versionlie.c.

Typedef Documentation

◆ KSE_VERSION_LIE

◆ PKSE_VERSION_LIE

Function Documentation

◆ DEFINE_GUID()

DEFINE_GUID ( KseWin2k3VersionLieGuid  ,
0xb120afe6  ,
0x7bdd  ,
0x4672  ,
0xa9  ,
0x90  ,
0x00  ,
0xb1  ,
0x3d  ,
0x50  ,
0x78  ,
0x05   
)

◆ KseCommonPsGetVersion()

static BOOLEAN KseCommonPsGetVersion ( OUT PULONG MajorVersion  OPTIONAL,
OUT PULONG MinorVersion  OPTIONAL,
OUT PULONG BuildNumber  OPTIONAL,
OUT PUNICODE_STRING CSDVersion  OPTIONAL,
IN PKSE_VERSION_LIE  VersionLie 
)
static

Definition at line 69 of file versionlie.c.

75{
76 if (MajorVersion) *MajorVersion = VersionLie->MajorVersion;
77 if (MinorVersion) *MinorVersion = VersionLie->MinorVersion;
78 if (BuildNumber ) *BuildNumber = VersionLie->BuildNumber;
79 if (CSDVersion ) *CSDVersion = VersionLie->CSDVersion;
80
81 /* Still report whether this is a checked build */
82 return PsGetVersion(NULL, NULL, NULL, NULL);
83}
#define NULL
Definition: types.h:112
#define PsGetVersion(a, b, c, d)
Definition: env_spec_w32.h:83
ULONG BuildNumber
Definition: ros_glue.cpp:6
ULONG MajorVersion
Definition: ros_glue.cpp:4
ULONG MinorVersion
Definition: ros_glue.cpp:5

Referenced by KseWin2k3PsGetVersion().

◆ KseCommonRtlGetVersion()

static NTSTATUS KseCommonRtlGetVersion ( IN OUT PRTL_OSVERSIONINFOW  lpVersionInformation,
IN PKSE_VERSION_LIE  VersionLie 
)
static

Definition at line 36 of file versionlie.c.

39{
42
43 /* Let the kernel fill in the fields that are not faked */
45 if (!NT_SUCCESS(Status))
46 return Status;
47
48 lpVersionInformation->dwMajorVersion = VersionLie->MajorVersion;
49 lpVersionInformation->dwMinorVersion = VersionLie->MinorVersion;
50 lpVersionInformation->dwBuildNumber = VersionLie->BuildNumber;
52
53 RtlZeroMemory(lpVersionInformation->szCSDVersion, sizeof(lpVersionInformation->szCSDVersion));
55 VersionLie->CSDVersion.Buffer,
56 min(VersionLie->CSDVersion.Length, sizeof(lpVersionInformation->szCSDVersion) - sizeof(WCHAR)));
57
58 if (lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW))
59 {
61 InfoEx->wServicePackMajor = VersionLie->ServicePackMajor;
62 InfoEx->wServicePackMinor = 0;
63 }
64
65 return STATUS_SUCCESS;
66}
LONG NTSTATUS
Definition: precomp.h:26
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
NTSTATUS NTAPI RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
Definition: version.c:182
Status
Definition: gdiplustypes.h:24
#define min(a, b)
Definition: monoChain.cc:55
#define VER_PLATFORM_WIN32_NT
Definition: rtltypes.h:246
short WCHAR
Definition: pedump.c:58
#define STATUS_SUCCESS
Definition: shellext.h:65
USHORT wServicePackMinor
Definition: rtltypes.h:276
USHORT wServicePackMajor
Definition: rtltypes.h:275
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
_In_ DWORD _In_ int _In_ int _In_opt_ LPNLSVERSIONINFO lpVersionInformation
Definition: winnls.h:1278
struct _OSVERSIONINFOEXW * PRTL_OSVERSIONINFOEXW

Referenced by KseWin2k3RtlGetVersion().

◆ KseVersionLieInitialize()

NTSTATUS NTAPI KseVersionLieInitialize ( VOID  )

Definition at line 120 of file versionlie.c.

121{
123 ULONG n;
124
125 for (n = 0; n < RTL_NUMBER_OF(KseVersionLieShims); n++)
126 {
128 if (!NT_SUCCESS(Status))
129 {
130 DPRINT1("KSE: Unable to register %S shim (0x%lx)\n", KseVersionLieShims[n].ShimName, Status);
131 Result = Status;
132 }
133 }
134
135 return Result;
136}
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
#define DPRINT1
Definition: precomp.h:8
GLdouble n
Definition: glext.h:7729
NTSTATUS NTAPI KseRegisterShim(_In_ PKSE_SHIM Shim, _In_ PVOID Ignored, _In_ ULONG Flags)
Definition: kse.c:467
static KSE_SHIM KseVersionLieShims[]
Definition: versionlie.c:113
uint32_t ULONG
Definition: typedefs.h:59
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409

Referenced by KseInitialize().

◆ KseWin2k3PsGetVersion()

static BOOLEAN NTAPI KseWin2k3PsGetVersion ( OUT PULONG MajorVersion  OPTIONAL,
OUT PULONG MinorVersion  OPTIONAL,
OUT PULONG BuildNumber  OPTIONAL,
OUT PUNICODE_STRING CSDVersion  OPTIONAL 
)
static

Definition at line 94 of file versionlie.c.

98{
100}
static BOOLEAN KseCommonPsGetVersion(OUT PULONG MajorVersion OPTIONAL, OUT PULONG MinorVersion OPTIONAL, OUT PULONG BuildNumber OPTIONAL, OUT PUNICODE_STRING CSDVersion OPTIONAL, IN PKSE_VERSION_LIE VersionLie)
Definition: versionlie.c:69
static KSE_VERSION_LIE KseWin2k3VersionLie
Definition: versionlie.c:33

◆ KseWin2k3RtlGetVersion()

static NTSTATUS NTAPI KseWin2k3RtlGetVersion ( IN OUT PRTL_OSVERSIONINFOW  lpVersionInformation)
static

Definition at line 87 of file versionlie.c.

88{
90}
static NTSTATUS KseCommonRtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation, IN PKSE_VERSION_LIE VersionLie)
Definition: versionlie.c:36

Variable Documentation

◆ KseVersionLieShims

KSE_SHIM KseVersionLieShims[]
static
Initial value:
= {
{ sizeof(KSE_SHIM), &KseWin2k3VersionLieGuid, L"KmWin2k3VersionLie", NULL, NULL, NULL, KseWin2k3VersionLieShimCollections },
}
#define L(x)
Definition: resources.c:13
struct _KSE_SHIM KSE_SHIM
static KSE_HOOK_COLLECTION KseWin2k3VersionLieShimCollections[]
Definition: versionlie.c:108

Definition at line 113 of file versionlie.c.

Referenced by KseVersionLieInitialize().

◆ KseWin2k3VersionLie

KSE_VERSION_LIE KseWin2k3VersionLie = { 5, 2, 3790, 2, RTL_CONSTANT_STRING(L"Service Pack 2") }
static

Definition at line 33 of file versionlie.c.

Referenced by KseWin2k3PsGetVersion(), and KseWin2k3RtlGetVersion().

◆ KseWin2k3VersionLieHooksNT

KSE_HOOK KseWin2k3VersionLieHooksNT[]
static
Initial value:
= {
}
#define KseHookInvalid
Definition: kse.h:13
#define KseHookFunction
Definition: kse.h:11
static NTSTATUS NTAPI KseWin2k3RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
Definition: versionlie.c:87
static BOOLEAN NTAPI KseWin2k3PsGetVersion(OUT PULONG MajorVersion OPTIONAL, OUT PULONG MinorVersion OPTIONAL, OUT PULONG BuildNumber OPTIONAL, OUT PUNICODE_STRING CSDVersion OPTIONAL)
Definition: versionlie.c:94
void * PVOID
Definition: typedefs.h:50
uint32_t ULONG_PTR
Definition: typedefs.h:65

Definition at line 102 of file versionlie.c.

◆ KseWin2k3VersionLieShimCollections

KSE_HOOK_COLLECTION KseWin2k3VersionLieShimCollections[]
static
Initial value:
= {
}
#define KseCollectionInvalid
Definition: kse.h:38
#define KseCollectionNtExport
Definition: kse.h:34
static KSE_HOOK KseWin2k3VersionLieHooksNT[]
Definition: versionlie.c:102

Definition at line 108 of file versionlie.c.