- 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
This commit is contained in:
faust3 2007-09-17 21:12:29 +00:00
parent bdae402dca
commit 04145051ba
6 changed files with 459 additions and 13 deletions

View File

@ -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

View File

@ -3,4 +3,4 @@ TARGETPATH=.
TARGETTYPE=DRIVER
NTDEBUG=ntsd
SOURCES= dhahelper.c
SOURCES= dhahelper.c dhahelper.rc

View File

@ -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

View File

@ -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--;
}

View File

@ -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"

151
vidix/dhahelperwin/ntverp.h Normal file
View File

@ -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."