mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
Implemented VerSetConditionMask.
[HEADER HELL] VER_XXX macros defined inside the source file. Sorry svn path=/trunk/; revision=11571
This commit is contained in:
parent
aba2c302f3
commit
515d472b0f
4 changed files with 87 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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.%
|
||||
|
|
3
reactos/lib/ntdll/ver/.cvsignore
Normal file
3
reactos/lib/ntdll/ver/.cvsignore
Normal file
|
@ -0,0 +1,3 @@
|
|||
*.d
|
||||
*.o
|
||||
*.sym
|
76
reactos/lib/ntdll/ver/ver.c
Normal file
76
reactos/lib/ntdll/ver/ver.c
Normal 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 */
|
Loading…
Reference in a new issue