Moved the Windows version code to dlls/ntdll, and implemented RtlGetVersion and RtlVerifyVersionInfo. Moved the 16-bit and DOS version support to dlls/kernel.
diff --git a/include/winbase.h b/include/winbase.h index eeb3de4..a617d93 100644 --- a/include/winbase.h +++ b/include/winbase.h
@@ -833,100 +833,6 @@ #define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000 #define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF -typedef struct { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - CHAR szCSDVersion[128]; -} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA; - -typedef struct { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - WCHAR szCSDVersion[128]; -} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW; - -DECL_WINELIB_TYPE_AW(OSVERSIONINFO) -DECL_WINELIB_TYPE_AW(POSVERSIONINFO) -DECL_WINELIB_TYPE_AW(LPOSVERSIONINFO) - -typedef struct { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - CHAR szCSDVersion[128]; - WORD wServicePackMajor; - WORD wServicePackMinor; - WORD wSuiteMask; - BYTE wProductType; - BYTE wReserved; -} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA; - -typedef struct { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - WCHAR szCSDVersion[128]; - WORD wServicePackMajor; - WORD wServicePackMinor; - WORD wSuiteMask; - BYTE wProductType; - BYTE wReserved; -} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW; - -DECL_WINELIB_TYPE_AW(OSVERSIONINFOEX) -DECL_WINELIB_TYPE_AW(POSVERSIONINFOEX) -DECL_WINELIB_TYPE_AW(LPOSVERSIONINFOEX) - -ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE); - -#define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_)=VerSetConditionMask((_m_),(_t_),(_c_))) - -#define VER_PLATFORM_WIN32s 0 -#define VER_PLATFORM_WIN32_WINDOWS 1 -#define VER_PLATFORM_WIN32_NT 2 - -#define VER_MINORVERSION 0x00000001 -#define VER_MAJORVERSION 0x00000002 -#define VER_BUILDNUMBER 0x00000004 -#define VER_PLATFORMID 0x00000008 -#define VER_SERVICEPACKMINOR 0x00000010 -#define VER_SERVICEPACKMAJOR 0x00000020 -#define VER_SUITENAME 0x00000040 -#define VER_PRODUCT_TYPE 0x00000080 - -#define VER_NT_WORKSTATION 1 -#define VER_NT_DOMAIN_CONTROLLER 2 -#define VER_NT_SERVER 3 - -#define VER_SUITE_SMALLBUSINESS 0x00000001 -#define VER_SUITE_ENTERPRISE 0x00000002 -#define VER_SUITE_BACKOFFICE 0x00000004 -#define VER_SUITE_COMMUNICATIONS 0x00000008 -#define VER_SUITE_TERMINAL 0x00000010 -#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 -#define VER_SUITE_EMBEDDEDNT 0x00000040 -#define VER_SUITE_DATACENTER 0x00000080 -#define VER_SUITE_SINGLEUSERTS 0x00000100 -#define VER_SUITE_PERSONAL 0x00000200 - -#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 - typedef struct tagCOMSTAT { DWORD fCtsHold : 1; @@ -1102,11 +1008,6 @@ ComputerNameMax } COMPUTER_NAME_FORMAT; -/*DWORD WINAPI GetVersion( void );*/ -BOOL WINAPI GetVersionExA(OSVERSIONINFOA*); -BOOL WINAPI GetVersionExW(OSVERSIONINFOW*); -#define GetVersionEx WINELIB_NAME_AW(GetVersionEx) - #define HW_PROFILE_GUIDLEN 39 #define MAX_PROFILE_LEN 80 @@ -1725,7 +1626,10 @@ UINT WINAPI GetTempPathA(UINT,LPSTR); UINT WINAPI GetTempPathW(UINT,LPWSTR); #define GetTempPath WINELIB_NAME_AW(GetTempPath) -LONG WINAPI GetVersion(void); +DWORD WINAPI GetVersion(void); +BOOL WINAPI GetVersionExA(OSVERSIONINFOA*); +BOOL WINAPI GetVersionExW(OSVERSIONINFOW*); +#define GetVersionEx WINELIB_NAME_AW(GetVersionEx) BOOL WINAPI GetVolumeInformationA(LPCSTR,LPSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD); BOOL WINAPI GetVolumeInformationW(LPCWSTR,LPWSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPWSTR,DWORD); #define GetVolumeInformation WINELIB_NAME_AW(GetVolumeInformation)
diff --git a/include/windef.h b/include/windef.h index 765f451..809fdd3 100644 --- a/include/windef.h +++ b/include/windef.h
@@ -179,8 +179,6 @@ typedef unsigned long ULONG, *PULONG; typedef float FLOAT, *PFLOAT; -#include <winnt.h> - /* Macros to map Winelib names to the correct implementation name */ /* Note that Winelib is purely Win32. */ @@ -202,6 +200,7 @@ # define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; #endif /* __WINESRC__ */ +#include <winnt.h> /* Polymorphic types */
diff --git a/include/wine/winbase16.h b/include/wine/winbase16.h index 3b889be..6ec65ce 100644 --- a/include/wine/winbase16.h +++ b/include/wine/winbase16.h
@@ -309,7 +309,7 @@ BOOL16 WINAPI GetStringType16(LCID,DWORD,LPCSTR,INT16,LPWORD); UINT16 WINAPI GetSystemDirectory16(LPSTR,UINT16); UINT16 WINAPI GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR); -LONG WINAPI GetVersion16(void); +DWORD WINAPI GetVersion16(void); BOOL16 WINAPI GetVersionEx16(OSVERSIONINFO16*); BOOL16 WINAPI GetWinDebugInfo16(LPWINDEBUGINFO16,UINT16); UINT16 WINAPI GetWindowsDirectory16(LPSTR,UINT16);
diff --git a/include/winnt.h b/include/winnt.h index 6dba3e2..7915d0b 100644 --- a/include/winnt.h +++ b/include/winnt.h
@@ -3610,4 +3610,98 @@ } IO_COUNTERS; typedef IO_COUNTERS *PIO_COUNTERS; +typedef struct { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[128]; +} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA; + +typedef struct { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[128]; +} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW; + +DECL_WINELIB_TYPE_AW(OSVERSIONINFO) +DECL_WINELIB_TYPE_AW(POSVERSIONINFO) +DECL_WINELIB_TYPE_AW(LPOSVERSIONINFO) + +typedef struct { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[128]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA; + +typedef struct { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[128]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW; + +DECL_WINELIB_TYPE_AW(OSVERSIONINFOEX) +DECL_WINELIB_TYPE_AW(POSVERSIONINFOEX) +DECL_WINELIB_TYPE_AW(LPOSVERSIONINFOEX) + +ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE); + +#define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_)=VerSetConditionMask((_m_),(_t_),(_c_))) + +#define VER_PLATFORM_WIN32s 0 +#define VER_PLATFORM_WIN32_WINDOWS 1 +#define VER_PLATFORM_WIN32_NT 2 + +#define VER_MINORVERSION 0x00000001 +#define VER_MAJORVERSION 0x00000002 +#define VER_BUILDNUMBER 0x00000004 +#define VER_PLATFORMID 0x00000008 +#define VER_SERVICEPACKMINOR 0x00000010 +#define VER_SERVICEPACKMAJOR 0x00000020 +#define VER_SUITENAME 0x00000040 +#define VER_PRODUCT_TYPE 0x00000080 + +#define VER_NT_WORKSTATION 1 +#define VER_NT_DOMAIN_CONTROLLER 2 +#define VER_NT_SERVER 3 + +#define VER_SUITE_SMALLBUSINESS 0x00000001 +#define VER_SUITE_ENTERPRISE 0x00000002 +#define VER_SUITE_BACKOFFICE 0x00000004 +#define VER_SUITE_COMMUNICATIONS 0x00000008 +#define VER_SUITE_TERMINAL 0x00000010 +#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 +#define VER_SUITE_EMBEDDEDNT 0x00000040 +#define VER_SUITE_DATACENTER 0x00000080 +#define VER_SUITE_SINGLEUSERTS 0x00000100 +#define VER_SUITE_PERSONAL 0x00000200 + +#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 + #endif /* __WINE_WINNT_H */
diff --git a/include/winternl.h b/include/winternl.h index ecd0964..8592ee9 100644 --- a/include/winternl.h +++ b/include/winternl.h
@@ -1147,6 +1147,7 @@ NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN); ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*); NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN); +NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*); PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID); PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *); @@ -1269,6 +1270,7 @@ BOOLEAN WINAPI RtlValidAcl(PACL); BOOLEAN WINAPI RtlValidSid(PSID); BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID); +NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG); NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);