Moved VerSetConditionMask in RTL so it can be exported from ntoskrnl too

svn path=/trunk/; revision=11580
This commit is contained in:
KJK::Hyperion 2004-11-07 18:45:52 +00:00
parent 11aba14d5f
commit 626b0a1f74
5 changed files with 67 additions and 87 deletions

View file

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

View file

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

View file

@ -1,76 +0,0 @@
/* $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 */

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* $Id: version.c,v 1.3 2004/08/07 19:13:25 ion Exp $
/* $Id: version.c,v 1.4 2004/11/07 18:45:52 hyperion Exp $
*
* PROJECT: ReactOS kernel
* PURPOSE: Runtime code
@ -98,4 +98,66 @@ RtlVerifyVersionInfo(
}
*/
/*
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
/*
* @implemented
*/
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 */

View file

@ -1,4 +1,4 @@
; $Id: ntoskrnl.def,v 1.197 2004/10/30 23:48:57 navaraf Exp $
; $Id: ntoskrnl.def,v 1.198 2004/11/07 18:45:52 hyperion Exp $
;
; reactos/ntoskrnl/ntoskrnl.def
;
@ -1281,6 +1281,7 @@ SeTokenType@4
SeUnlockSubjectContext@4
SeUnregisterLogonSessionTerminatedRoutine@4
SeValidSecurityDescriptor@8
VerSetConditionMask@16
WRITE_REGISTER_UCHAR@8
WRITE_REGISTER_ULONG@8
WRITE_REGISTER_USHORT@8