summaryrefslogtreecommitdiffstats
path: root/vidix
diff options
context:
space:
mode:
authorfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-09-17 21:12:29 +0000
committerfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-09-17 21:12:29 +0000
commit04145051ba62227a6e1ccb3a48994f367937b004 (patch)
tree9b6292e03f8e4e599e79e518c864b23aadac55db /vidix
parentbdae402dcaf190cb9a83b150e75f93dd8b64d9e2 (diff)
downloadmpv-04145051ba62227a6e1ccb3a48994f367937b004.tar.bz2
mpv-04145051ba62227a6e1ccb3a48994f367937b004.tar.xz
- make dhahelperwin compile with mingw
- add dhahelper.rc based on code by Kevin Kofler and Romain LiƩvin <roms at lievin.net> from the tilp project http://svn.tilp.info/cgi-bin/viewcvs.cgi/libticables/trunk/src/win32/dha/ git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24561 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'vidix')
-rw-r--r--vidix/dhahelperwin/Makefile42
-rw-r--r--vidix/dhahelperwin/SOURCES2
-rw-r--r--vidix/dhahelperwin/common.ver207
-rw-r--r--vidix/dhahelperwin/dhahelper.c53
-rw-r--r--vidix/dhahelperwin/dhahelper.rc17
-rw-r--r--vidix/dhahelperwin/ntverp.h151
6 files changed, 459 insertions, 13 deletions
diff --git a/vidix/dhahelperwin/Makefile b/vidix/dhahelperwin/Makefile
new file mode 100644
index 0000000000..4ce2af98a7
--- /dev/null
+++ b/vidix/dhahelperwin/Makefile
@@ -0,0 +1,42 @@
+include ../../config.mak
+
+all: dhasetup.exe dhahelper.sys
+
+dhasetup.exe: dhasetup.c
+ $(CC) -o dhasetup.exe dhasetup.c
+
+dhahelper.o: dhahelper.c dhahelper.h
+ $(CC) -Wall -Os -c dhahelper.c -o dhahelper.o
+
+dhahelper-rc.o: dhahelper.rc common.ver ntverp.h
+ windres -I. dhahelper.rc $@
+
+base.tmp: dhahelper.o dhahelper-rc.o
+ $(CC) -Wl,--base-file,base.tmp \
+ -Wl,--entry,_DriverEntry@8 \
+ -nostartfiles -nostdlib \
+ -o junk.tmp \
+ dhahelper.o dhahelper-rc.o \
+ -lntoskrnl
+ -rm -f junk.tmp
+
+temp.exp: base.tmp
+ dlltool --dllname dhahelper.sys --base-file base.tmp --output-exp temp.exp
+
+dhahelper.sys: dhahelper.o dhahelper-rc.o temp.exp
+ $(CC) -Wl,--subsystem,native \
+ -Wl,--image-base,0x10000 \
+ -Wl,--file-alignment,0x1000 \
+ -Wl,--section-alignment,0x1000 \
+ -Wl,--entry,_DriverEntry@8 \
+ -Wl,temp.exp \
+ -mdll -nostartfiles -nostdlib \
+ -o dhahelper.sys \
+ dhahelper.o dhahelper-rc.o \
+ -lntoskrnl
+ strip dhahelper.sys
+
+clean:
+ rm -f *.o *~ dhahelper.sys dhasetup.exe base.tmp temp.exp
+
+distclean: clean
diff --git a/vidix/dhahelperwin/SOURCES b/vidix/dhahelperwin/SOURCES
index e44aa06971..c1adcc37f4 100644
--- a/vidix/dhahelperwin/SOURCES
+++ b/vidix/dhahelperwin/SOURCES
@@ -3,4 +3,4 @@ TARGETPATH=.
TARGETTYPE=DRIVER
NTDEBUG=ntsd
-SOURCES= dhahelper.c
+SOURCES= dhahelper.c dhahelper.rc
diff --git a/vidix/dhahelperwin/common.ver b/vidix/dhahelperwin/common.ver
new file mode 100644
index 0000000000..3295b44320
--- /dev/null
+++ b/vidix/dhahelperwin/common.ver
@@ -0,0 +1,207 @@
+/*
+ * PROJECT: ReactOS
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: include/psdk/common.ver
+ * PURPOSE: Common Version File.
+ * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
+ */
+
+//
+// Copyright Year
+//
+#ifndef VER_LEGALCOPYRIGHT_YEARS
+#define VER_LEGALCOPYRIGHT_YEARS "2007"
+#endif
+
+//
+// Copyright String
+//
+#ifndef VER_LEGALCOPYRIGHT_STR
+#if defined(RC_INVOKED) && !defined(WIN16)
+#define VER_LEGALCOPYRIGHT_STR L"\251 ReactOS Foundation. All rights reserved."
+#else
+#define VER_LEGALCOPYRIGHT_STR "Copyright (c) ReactOS Foundation. All rights reserved."
+#endif
+#endif
+
+//
+// Product Name String
+//
+#ifndef VER_PRODUCTNAME_STR
+#ifdef RC_INVOKED
+#define VER_PRODUCTNAME_STR L"ReactOS\256 Operating System"
+#else
+#define VER_PRODUCTNAME_STR "ReactOS (R) Operating System"
+#endif
+#endif
+
+//
+// The File Version is the same as the Product Version
+//
+#ifndef VER_FILEVERSION
+#define VER_FILEVERSION VER_PRODUCTVERSION
+#endif
+#ifndef VER_FILEVERSION_STR
+#define VER_FILEVERSION_STR VER_PRODUCTVERSION_STR
+#endif
+
+//
+// If no Original Name was given, use the Internal NAme
+//
+#ifndef VER_ORIGINALFILENAME_STR
+#define VER_ORIGINALFILENAME_STR VER_INTERNALNAME_STR
+#endif
+
+//
+// Allow tagging a Build by Machine/Date
+//
+#if defined(__BUILDMACHINE__)
+#if defined(__BUILDDATE__)
+#define B2(x,y) " (" #x "." #y ")"
+#define B1(x,y) B2(x, y)
+#define BUILD_MACHINE_TAG B1(__BUILDMACHINE__, __BUILDDATE__)
+#else
+#define B2(x) " built by: " #x
+#define B1(x) B2(x)
+#define BUILD_MACHINE_TAG B1(__BUILDMACHINE__)
+#endif
+#if defined(__BUILDMACHINE_LEN__)
+#if __BUILDMACHINE_LEN__ >= 25
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG
+#elif __BUILDMACHINE_LEN__ == 24
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 23
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 22
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 21
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 20
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 19
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 18
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 17
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 16
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 15
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 14
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 13
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 12
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 11
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 10
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 9
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 8
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 7
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 6
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 5
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 4
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 3
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 2
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#elif __BUILDMACHINE_LEN__ == 1
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " "
+#else
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG
+#endif
+#else
+#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG
+#endif
+#else
+#define BUILD_MACHINE_TAG
+#define BUILD_MACHINE_TAG_PADDED
+#endif
+
+//
+// Set default neutral Unicode Language ID
+//
+#ifndef VER_VERSION_UNICODE_LANG
+#define VER_VERSION_UNICODE_LANG "000004B0"
+#endif
+
+//
+// Set default netural ANSI Language ID
+//
+#ifndef VER_VERSION_ANSI_LANG
+#define VER_VERSION_ANSI_LANG "000004E4"
+#endif
+
+//
+// Set default netural translation ID
+//
+#ifndef VER_VERSION_TRANSLATION
+#define VER_VERSION_TRANSLATION 0x0000, 0x04B0
+#endif
+
+//
+// Make sure the Resource Compiler called us.
+// If so, then build the actual version resource.
+//
+#ifdef RC_INVOKED
+
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION VER_FILEVERSION
+PRODUCTVERSION VER_PRODUCTVERSION
+FILEFLAGSMASK VER_FILEFLAGSMASK
+FILEFLAGS VER_FILEFLAGS
+FILEOS VER_FILEOS
+FILETYPE VER_FILETYPE
+FILESUBTYPE VER_FILESUBTYPE
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK VER_VERSION_UNICODE_LANG
+ BEGIN
+ VALUE "CompanyName", VER_COMPANYNAME_STR
+ VALUE "FileDescription", VER_FILEDESCRIPTION_STR
+ VALUE "FileVersion", VER_FILEVERSION_STR BUILD_MACHINE_TAG_PADDED
+ VALUE "InternalName", VER_INTERNALNAME_STR
+ VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
+ VALUE "OriginalFilename",VER_ORIGINALFILENAME_STR
+ VALUE "ProductName", VER_PRODUCTNAME_STR
+ VALUE "ProductVersion", VER_PRODUCTVERSION_STR
+#ifdef VER_OLESELFREGISTER
+ VALUE "OleSelfRegister", "\0"
+#endif
+ END
+
+#ifdef VER_ANSICP
+ BLOCK VER_VERSION_ANSI_LANG
+ BEGIN
+ VALUE "CompanyName", VER_COMPANYNAME_STR
+ VALUE "FileDescription", VER_FILEDESCRIPTION_STR EXPORT_TAG
+ VALUE "FileVersion", VER_FILEVERSION_STR
+ VALUE "InternalName", VER_INTERNALNAME_STR
+ VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
+ VALUE "OriginalFilename",VER_ORIGINALFILENAME_STR
+ VALUE "ProductName", VER_PRODUCTNAME_STR
+ VALUE "ProductVersion", VER_PRODUCTVERSION_STR
+#ifdef VER_OLESELFREGISTER
+ VALUE "OleSelfRegister", "\0"
+#endif
+ END
+#endif
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", VER_VERSION_TRANSLATION
+ END
+END
+
+#endif
diff --git a/vidix/dhahelperwin/dhahelper.c b/vidix/dhahelperwin/dhahelper.c
index 04eb0c2c5d..b68f397c6d 100644
--- a/vidix/dhahelperwin/dhahelper.c
+++ b/vidix/dhahelperwin/dhahelper.c
@@ -1,6 +1,8 @@
/******************************************************************************
* dhahelper.c: direct hardware access under Windows NT/2000/XP
* Copyright (c) 2004 Sascha Sommer <saschasommer@freenet.de>.
+ * Patched to compile with MinGW by Kevin Kofler:
+ * Copyright (c) 2007 Kevin Kofler
*
* This file is part of MPlayer.
*
@@ -21,7 +23,18 @@
*****************************************************************************/
+#if defined(_MSC_VER)
#include <ntddk.h>
+#ifndef STDCALL
+#define STDCALL /* nothing */
+#endif
+#elif defined(__MINGW32__)
+#include <ddk/ntddk.h>
+#define NO_SEH /* FIXME */
+#else
+#error Unsupported compiler. This driver requires MSVC+DDK or MinGW to build.
+#endif
+
#include "dhahelper.h"
#define OutputDebugString DbgPrint
@@ -47,20 +60,20 @@ static unsigned int alloccount=0;
-static NTSTATUS dhahelperdispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
-static void dhahelperunload(IN PDRIVER_OBJECT DriverObject);
-static NTSTATUS UnmapPhysicalMemory(PVOID UserVirtualAddress);
-static NTSTATUS MapPhysicalMemoryToLinearSpace(PVOID pPhysAddress,ULONG PhysMemSizeInBytes,PVOID *PhysMemLin);
+static STDCALL NTSTATUS dhahelperdispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
+static STDCALL void dhahelperunload(IN PDRIVER_OBJECT DriverObject);
+static STDCALL NTSTATUS UnmapPhysicalMemory(PVOID UserVirtualAddress);
+static STDCALL NTSTATUS MapPhysicalMemoryToLinearSpace(PVOID pPhysAddress,ULONG PhysMemSizeInBytes,PVOID *PhysMemLin);
-void Ke386SetIoAccessMap(int, IOPM *);
-void Ke386QueryIoAccessMap(int, IOPM *);
-void Ke386IoSetAccessProcess(PEPROCESS, int);
+void STDCALL Ke386SetIoAccessMap(int, IOPM *);
+void STDCALL Ke386QueryIoAccessMap(int, IOPM *);
+void STDCALL Ke386IoSetAccessProcess(PEPROCESS, int);
//entry point
-NTSTATUS DriverEntry (IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath){
+STDCALL NTSTATUS DriverEntry (IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath){
UNICODE_STRING DeviceNameUnicodeString;
UNICODE_STRING DeviceLinkUnicodeString;
NTSTATUS ntStatus;
@@ -106,7 +119,7 @@ NTSTATUS DriverEntry (IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING Registry
// Process the IRPs sent to this device
-static NTSTATUS dhahelperdispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp){
+static STDCALL NTSTATUS dhahelperdispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp){
PIO_STACK_LOCATION IrpStack;
ULONG dwInputBufferLength;
ULONG dwOutputBufferLength;
@@ -207,7 +220,7 @@ static NTSTATUS dhahelperdispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp){
// Delete the associated device and return
-static void dhahelperunload(IN PDRIVER_OBJECT DriverObject){
+static STDCALL void dhahelperunload(IN PDRIVER_OBJECT DriverObject){
UNICODE_STRING DeviceLinkUnicodeString;
NTSTATUS ntStatus=STATUS_SUCCESS;
OutputDebugString ("dhahelper: entering dhahelperunload");
@@ -240,7 +253,7 @@ static void dhahelperunload(IN PDRIVER_OBJECT DriverObject){
//I'm not sure what the limitations of ZwMapViewOfSection are but mapping 128MB videoram (that is probably already mapped by the gfxcard driver)
//won't work so it is generally a good idea to map only the memory you really need
-static NTSTATUS MapPhysicalMemoryToLinearSpace(PVOID pPhysAddress,ULONG PhysMemSizeInBytes,PVOID *PhysMemLin){
+static STDCALL NTSTATUS MapPhysicalMemoryToLinearSpace(PVOID pPhysAddress,ULONG PhysMemSizeInBytes,PVOID *PhysMemLin){
alloc_priv* alloclisttmp;
PMDL Mdl=NULL;
PVOID SystemVirtualAddress=NULL;
@@ -248,8 +261,14 @@ static NTSTATUS MapPhysicalMemoryToLinearSpace(PVOID pPhysAddress,ULONG PhysMemS
PHYSICAL_ADDRESS pStartPhysAddress;
OutputDebugString ("dhahelper: entering MapPhysicalMemoryToLinearSpace");
+#ifdef _WIN64
pStartPhysAddress.QuadPart = (ULONGLONG)pPhysAddress;
+#else
+ pStartPhysAddress.QuadPart = (ULONGLONG)(ULONG)pPhysAddress;
+#endif
+#ifndef NO_SEH
__try {
+#endif
SystemVirtualAddress=MmMapIoSpace(pStartPhysAddress,PhysMemSizeInBytes, /*MmWriteCombined*/MmNonCached);
if(!SystemVirtualAddress){
OutputDebugString("dhahelper: MmMapIoSpace failed");
@@ -263,18 +282,24 @@ static NTSTATUS MapPhysicalMemoryToLinearSpace(PVOID pPhysAddress,ULONG PhysMemS
}
OutputDebugString("dhahelper: Mdl 0x%x",Mdl);
MmBuildMdlForNonPagedPool(Mdl);
+#ifdef _WIN64
+ UserVirtualAddress = (PVOID)(((ULONGLONG)PAGE_ALIGN(MmMapLockedPages(Mdl,UserMode))) + MmGetMdlByteOffset(Mdl));
+#else
UserVirtualAddress = (PVOID)(((ULONG)PAGE_ALIGN(MmMapLockedPages(Mdl,UserMode))) + MmGetMdlByteOffset(Mdl));
+#endif
if(!UserVirtualAddress){
OutputDebugString("dhahelper: MmMapLockedPages failed");
return STATUS_INSUFFICIENT_RESOURCES;
}
OutputDebugString("dhahelper: UserVirtualAddress 0x%x",UserVirtualAddress);
+#ifndef NO_SEH
}__except(EXCEPTION_EXECUTE_HANDLER){
NTSTATUS ntStatus;
ntStatus = GetExceptionCode();
OutputDebugString("dhahelper: MapPhysicalMemoryToLinearSpace failed due to exception 0x%0x\n", ntStatus);
return ntStatus;
}
+#endif
OutputDebugString("dhahelper: adding data to internal allocation list");
@@ -304,7 +329,7 @@ static NTSTATUS MapPhysicalMemoryToLinearSpace(PVOID pPhysAddress,ULONG PhysMemS
return STATUS_SUCCESS;
}
-static NTSTATUS UnmapPhysicalMemory(PVOID UserVirtualAddress){
+static STDCALL NTSTATUS UnmapPhysicalMemory(PVOID UserVirtualAddress){
unsigned int i;
unsigned int x=0;
unsigned int alloccounttmp=alloccount;
@@ -327,16 +352,20 @@ static NTSTATUS UnmapPhysicalMemory(PVOID UserVirtualAddress){
}
else if(alloclist[i].UserVirtualAddress==UserVirtualAddress){
if(x==i){
+#ifndef NO_SEH
__try {
+#endif
MmUnmapLockedPages(alloclist[x].UserVirtualAddress, alloclist[x].Mdl);
IoFreeMdl(alloclist[x].Mdl);
MmUnmapIoSpace(alloclist[x].SystemVirtualAddress,alloclist[x].PhysMemSizeInBytes);
+#ifndef NO_SEH
}__except(EXCEPTION_EXECUTE_HANDLER){
NTSTATUS ntStatus;
ntStatus = GetExceptionCode();
OutputDebugString("dhahelper: UnmapPhysicalMemory failed due to exception 0x%0x (Mdl 0x%x)\n", ntStatus,alloclist[x].Mdl);
return ntStatus;
}
+#endif
}
alloccounttmp--;
}
diff --git a/vidix/dhahelperwin/dhahelper.rc b/vidix/dhahelperwin/dhahelper.rc
new file mode 100644
index 0000000000..3f878a5fd9
--- /dev/null
+++ b/vidix/dhahelperwin/dhahelper.rc
@@ -0,0 +1,17 @@
+#include <windows.h>
+
+#include <ntverp.h>
+
+#undef VER_COMPANYNAME_STR
+#undef VER_PRODUCTNAME_STR
+
+#define VER_FILETYPE VFT_DRV
+#define VER_FILESUBTYPE VFT2_DRV_SYSTEM
+#define VER_FILEDESCRIPTION_STR "DhaHelper - Direct HardWare Access Driver"
+#define VER_INTERNALNAME_STR "DhaHelper.sys"
+#define VER_ORIGINALFILENAME_STR "DhaHelper.sys"
+#define VER_LEGALCOPYRIGHT_STR "Sascha Sommer"
+#define VER_COMPANYNAME_STR "MPlayer <http://svn.mplayerhq.hu/mplayer/trunk/vidix/dhahelperwin/>"
+#define VER_PRODUCTNAME_STR "DhaHelper Driver V1.0"
+
+#include "common.ver"
diff --git a/vidix/dhahelperwin/ntverp.h b/vidix/dhahelperwin/ntverp.h
new file mode 100644
index 0000000000..bfcc43240d
--- /dev/null
+++ b/vidix/dhahelperwin/ntverp.h
@@ -0,0 +1,151 @@
+/*
+ * PROJECT: ReactOS
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: include/psdk/ntverp.h
+ * PURPOSE: Master Version File.
+ * This file should be modified only by the official builder
+ * to update VERSION, VER_PRODUCTVERSION, VER_PRODUCTVERSION_
+ * STR and VER_PRODUCTBETA_STR values.
+ * The VER_PRODUCTBUILD lines must contain the product
+ * comments and end with the build#<CR><LF>.
+ * The VER_PRODUCTBETA_STR lines must contain the product
+ * comments and end with "somestring"<CR><LF.
+ * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
+ */
+
+//
+// Windows NT Build 3790.1830
+//
+#define VER_PRODUCTBUILD 3790
+#define VER_PRODUCTBUILD_QFE 1830
+
+//
+// Windows NT Version 5.2
+//
+#define VER_PRODUCTMAJORVERSION 5
+#define VER_PRODUCTMINORVERSION 2
+#define VER_PRODUCTVERSION_W (0x0502)
+#define VER_PRODUCTVERSION_DW (0x05020000 | VER_PRODUCTBUILD)
+
+//
+// Not a beta
+//
+#define VER_PRODUCTBETA_STR ""
+
+//
+// ANSI String Generating Macros
+//
+#define VER_PRODUCTVERSION_MAJORMINOR2(x,y) \
+ #x "." #y
+#define VER_PRODUCTVERSION_MAJORMINOR1(x,y) \
+ VER_PRODUCTVERSION_MAJORMINOR2(x, y)
+#define VER_PRODUCTVERSION_STRING \
+ VER_PRODUCTVERSION_MAJORMINOR1(VER_PRODUCTMAJORVERSION, VER_PRODUCTMINORVERSION)
+
+//
+// Unicode String Generating Macros
+//
+#define LVER_PRODUCTVERSION_MAJORMINOR2(x,y)\
+ L#x L"." L#y
+#define LVER_PRODUCTVERSION_MAJORMINOR1(x,y)\
+ LVER_PRODUCTVERSION_MAJORMINOR2(x, y)
+#define LVER_PRODUCTVERSION_STRING \
+ LVER_PRODUCTVERSION_MAJORMINOR1(VER_PRODUCTMAJORVERSION, VER_PRODUCTMINORVERSION)
+
+//
+// Full Product Version
+//
+#define VER_PRODUCTVERSION \
+ VER_PRODUCTMAJORVERSION,VER_PRODUCTMINORVERSION,VER_PRODUCTBUILD,VER_PRODUCTBUILD_QFE
+
+//
+// Padding for ANSI Version String
+//
+#if (VER_PRODUCTBUILD < 10)
+#define VER_BPAD "000"
+#elif (VER_PRODUCTBUILD < 100)
+#define VER_BPAD "00"
+#elif (VER_PRODUCTBUILD < 1000)
+#define VER_BPAD "0"
+#else
+#define VER_BPAD
+#endif
+
+//
+// Padding for Unicode Version String
+//
+#if (VER_PRODUCTBUILD < 10)
+#define LVER_BPAD L"000"
+#elif (VER_PRODUCTBUILD < 100)
+#define LVER_BPAD L"00"
+#elif (VER_PRODUCTBUILD < 1000)
+#define LVER_BPAD L"0"
+#else
+#define LVER_BPAD
+#endif
+
+//
+// ANSI Product Version String
+//
+#define VER_PRODUCTVERSION_STR2(x,y) \
+ VER_PRODUCTVERSION_STRING "." VER_BPAD #x "." #y
+#define VER_PRODUCTVERSION_STR1(x,y) \
+ VER_PRODUCTVERSION_STR2(x, y)
+#define VER_PRODUCTVERSION_STR \
+ VER_PRODUCTVERSION_STR1(VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE)
+
+//
+// Unicode Product Version String
+//
+#define LVER_PRODUCTVERSION_STR2(x,y) \
+ LVER_PRODUCTVERSION_STRING L"." LVER_BPAD L#x L"." L#y
+#define LVER_PRODUCTVERSION_STR1(x,y) \
+ LVER_PRODUCTVERSION_STR2(x, y)
+#define LVER_PRODUCTVERSION_STR \
+ LVER_PRODUCTVERSION_STR1(VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE)
+
+//
+// Debug Flag
+//
+#if DBG
+#define VER_DEBUG VS_FF_DEBUG
+#else
+#define VER_DEBUG 0
+#endif
+
+//
+// Beta Flag
+//
+#if BETA
+#define VER_PRERELEASE VS_FF_PRERELEASE
+#else
+#define VER_PRERELEASE 0
+#endif
+
+//
+// Internal Flag
+//
+#if OFFICIAL_BUILD
+#define VER_PRIVATE 0
+#else
+#define VER_PRIVATE VS_FF_PRIVATEBUILD
+#endif
+
+//
+// Other Flags
+//
+#define VER_FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#define VER_FILEOS VOS_NT_WINDOWS32
+#define VER_FILEFLAGS (VER_PRERELEASE | \
+ VER_DEBUG | \
+ VER_PRIVATE)
+
+//
+// Company and Trademarks
+//
+#define VER_COMPANYNAME_STR \
+ "ReactOS(R) Foundation"
+#define VER_PRODUCTNAME_STR \
+ "ReactOS(R) Operating System"
+#define VER_LEGALTRADEMARKS_STR \
+ "ReactOS(R) is a registered trademark of the ReactOS Foundation."