Implemented VerSetConditionMask.

[HEADER HELL] VER_XXX macros defined inside the source file. Sorry

svn path=/trunk/; revision=11571
This commit is contained in:
KJK::Hyperion 2004-11-07 13:08:24 +00:00
parent aba2c302f3
commit 515d472b0f
4 changed files with 87 additions and 3 deletions

View file

@ -1,4 +1,4 @@
; $Id: ntdll.def,v 1.132 2004/09/23 17:03:59 weiden Exp $
; $Id: ntdll.def,v 1.133 2004/11/07 13:08:24 hyperion Exp $
;
; ReactOS Operating System
;
@ -681,6 +681,7 @@ RtlxOemStringToUnicodeSize@4
RtlxUnicodeStringToAnsiSize@4
RtlxUnicodeStringToOemSize@4
;SaveEm87Context
VerSetConditionMask@16
ZwAcceptConnectPort@24
ZwAccessCheck@32
ZwAccessCheckAndAuditAlarm@44

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.109 2004/09/10 23:29:18 sedwards Exp $
# $Id: makefile,v 1.110 2004/11/07 13:08:24 hyperion Exp $
PATH_TO_TOP = ../..
@ -122,6 +122,9 @@ STRING_OBJECTS = \
string/strupr.o \
string/wstring.o
VER_OBJECTS = \
ver/ver.o
ARCH_OBJECTS = \
$(RTL_I386_OBJECTS)
@ -134,7 +137,8 @@ TARGET_OBJECTS = \
$(RTL_OBJECTS) \
$(STDIO_OBJECTS) \
$(STDLIB_OBJECTS) \
$(STRING_OBJECTS)
$(STRING_OBJECTS) \
$(VER_OBJECTS)
DEP_OBJECTS = $(TARGET_OBJECTS)
DEP_EXCLUDE_FILTER = napi.%

View file

@ -0,0 +1,3 @@
*.d
*.o
*.sym

View file

@ -0,0 +1,76 @@
/* $Id: ver.c,v 1.1 2004/11/07 13:08:24 hyperion Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS NT Layer DLL
* FILE: lib/ntdll/ver/ver.c
* PURPOSE: Operating system version checking
* PROGRAMMERS: KJK::Hyperion
* HISTORY: 2004-11-07: Created (imported from Wine)
*/
#include <ddk/ntddk.h>
/*
Header hell made me do it, don't blame me. Please move these somewhere more
sensible
*/
#define VER_EQUAL 1
#define VER_GREATER 2
#define VER_GREATER_EQUAL 3
#define VER_LESS 4
#define VER_LESS_EQUAL 5
#define VER_AND 6
#define VER_OR 7
#define VER_CONDITION_MASK 7
#define VER_NUM_BITS_PER_CONDITION_MASK 3
#define VER_MINORVERSION 0x0000001
#define VER_MAJORVERSION 0x0000002
#define VER_BUILDNUMBER 0x0000004
#define VER_PLATFORMID 0x0000008
#define VER_SERVICEPACKMINOR 0x0000010
#define VER_SERVICEPACKMAJOR 0x0000020
#define VER_SUITENAME 0x0000040
#define VER_PRODUCT_TYPE 0x0000080
#define VER_NT_WORKSTATION 0x0000001
#define VER_NT_DOMAIN_CONTROLLER 0x0000002
#define VER_NT_SERVER 0x0000003
ULONGLONG NTAPI VerSetConditionMask
(
IN ULONGLONG dwlConditionMask,
IN DWORD dwTypeBitMask,
IN BYTE dwConditionMask
)
{
if(dwTypeBitMask == 0)
return dwlConditionMask;
dwConditionMask &= VER_CONDITION_MASK;
if(dwConditionMask == 0)
return dwlConditionMask;
if(dwTypeBitMask & VER_PRODUCT_TYPE)
dwlConditionMask |= dwConditionMask << 7 * VER_NUM_BITS_PER_CONDITION_MASK;
else if(dwTypeBitMask & VER_SUITENAME)
dwlConditionMask |= dwConditionMask << 6 * VER_NUM_BITS_PER_CONDITION_MASK;
else if(dwTypeBitMask & VER_SERVICEPACKMAJOR)
dwlConditionMask |= dwConditionMask << 5 * VER_NUM_BITS_PER_CONDITION_MASK;
else if(dwTypeBitMask & VER_SERVICEPACKMINOR)
dwlConditionMask |= dwConditionMask << 4 * VER_NUM_BITS_PER_CONDITION_MASK;
else if(dwTypeBitMask & VER_PLATFORMID)
dwlConditionMask |= dwConditionMask << 3 * VER_NUM_BITS_PER_CONDITION_MASK;
else if(dwTypeBitMask & VER_BUILDNUMBER)
dwlConditionMask |= dwConditionMask << 2 * VER_NUM_BITS_PER_CONDITION_MASK;
else if(dwTypeBitMask & VER_MAJORVERSION)
dwlConditionMask |= dwConditionMask << 1 * VER_NUM_BITS_PER_CONDITION_MASK;
else if(dwTypeBitMask & VER_MINORVERSION)
dwlConditionMask |= dwConditionMask << 0 * VER_NUM_BITS_PER_CONDITION_MASK;
return dwlConditionMask;
}
/* EOF */