| 1 | /* | 
 
 
 
 
 | 2 | * winver.h | 
 
 
 
 
 | 3 | * | 
 
 
 
 
 | 4 | * Declarations supporting the API for retrieval of version informatation | 
 
 
 
 
 | 5 | * from a PE-COFF file's associated version resources. | 
 
 
 
 
 | 6 | * | 
 
 
 
 
 | 7 | * $Id: winver.h,v 9f500a353390 2016/06/03 22:05:03 keithmarshall $ | 
 
 
 
 
 | 8 | * | 
 
 
 
 
 | 9 | * Written by Anders Norlander <anorland@hem2.passagen.se> | 
 
 
 
 
 | 10 | * Copyright (C) 1998, 1999, 2002, 2006, 2009, 2015, MinGW.org Project | 
 
 
 
 
 | 11 | * | 
 
 
 
 
 | 12 | * | 
 
 
 
 
 | 13 | * Permission is hereby granted, free of charge, to any person obtaining a | 
 
 
 
 
 | 14 | * copy of this software and associated documentation files (the "Software"), | 
 
 
 
 
 | 15 | * to deal in the Software without restriction, including without limitation | 
 
 
 
 
 | 16 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | 
 
 
 
 
 | 17 | * and/or sell copies of the Software, and to permit persons to whom the | 
 
 
 
 
 | 18 | * Software is furnished to do so, subject to the following conditions: | 
 
 
 
 
 | 19 | * | 
 
 
 
 
 | 20 | * The above copyright notice and this permission notice (including the next | 
 
 
 
 
 | 21 | * paragraph) shall be included in all copies or substantial portions of the | 
 
 
 
 
 | 22 | * Software. | 
 
 
 
 
 | 23 | * | 
 
 
 
 
 | 24 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
 
 
 
 
 | 25 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
 
 
 
 
 | 26 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | 
 
 
 
 
 | 27 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
 
 
 
 
 | 28 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | 
 
 
 
 
 | 29 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 
 
 
 
 
 | 30 | * DEALINGS IN THE SOFTWARE. | 
 
 
 
 
 | 31 | * | 
 
 
 
 
 | 32 | */ | 
 
 
 
 
 | 33 | #ifndef _WINVER_H | 
 
 
 
 
 | 34 | #define _WINVER_H | 
 
 
 
 
 | 35 | #pragma GCC system_header | 
 
 
 
 
 | 36 |  | 
 
 
 
 
 | 37 | #define VS_FILE_INFO            RT_VERSION | 
 
 
 
 
 | 38 | #define VS_VERSION_INFO                  1 | 
 
 
 
 
 | 39 | #define VS_USER_DEFINED                100 | 
 
 
 
 
 | 40 | #define VS_FFI_SIGNATURE        0xFEEF04BD | 
 
 
 
 
 | 41 | #define VS_FFI_STRUCVERSION        0x10000 | 
 
 
 
 
 | 42 | #define VS_FFI_FILEFLAGSMASK          0x3F | 
 
 
 
 
 | 43 | #define VS_FF_DEBUG                      1 | 
 
 
 
 
 | 44 | #define VS_FF_PRERELEASE                 2 | 
 
 
 
 
 | 45 | #define VS_FF_PATCHED                    4 | 
 
 
 
 
 | 46 | #define VS_FF_PRIVATEBUILD               8 | 
 
 
 
 
 | 47 | #define VS_FF_INFOINFERRED              16 | 
 
 
 
 
 | 48 | #define VS_FF_SPECIALBUILD              32 | 
 
 
 
 
 | 49 | #define VOS_UNKNOWN                      0 | 
 
 
 
 
 | 50 | #define VOS_DOS                    0x10000 | 
 
 
 
 
 | 51 | #define VOS_OS216                  0x20000 | 
 
 
 
 
 | 52 | #define VOS_OS232                  0x30000 | 
 
 
 
 
 | 53 | #define VOS_NT                     0x40000 | 
 
 
 
 
 | 54 | #define VOS__BASE                        0 | 
 
 
 
 
 | 55 | #define VOS__WINDOWS16                   1 | 
 
 
 
 
 | 56 | #define VOS__PM16                        2 | 
 
 
 
 
 | 57 | #define VOS__PM32                        3 | 
 
 
 
 
 | 58 | #define VOS__WINDOWS32                   4 | 
 
 
 
 
 | 59 | #define VOS_DOS_WINDOWS16          0x10001 | 
 
 
 
 
 | 60 | #define VOS_DOS_WINDOWS32          0x10004 | 
 
 
 
 
 | 61 | #define VOS_OS216_PM16             0x20002 | 
 
 
 
 
 | 62 | #define VOS_OS232_PM32             0x30003 | 
 
 
 
 
 | 63 | #define VOS_NT_WINDOWS32           0x40004 | 
 
 
 
 
 | 64 | #define VFT_UNKNOWN                      0 | 
 
 
 
 
 | 65 | #define VFT_APP                          1 | 
 
 
 
 
 | 66 | #define VFT_DLL                          2 | 
 
 
 
 
 | 67 | #define VFT_DRV                          3 | 
 
 
 
 
 | 68 | #define VFT_FONT                         4 | 
 
 
 
 
 | 69 | #define VFT_VXD                          5 | 
 
 
 
 
 | 70 | #define VFT_STATIC_LIB                   7 | 
 
 
 
 
 | 71 | #define VFT2_UNKNOWN                     0 | 
 
 
 
 
 | 72 | #define VFT2_DRV_PRINTER                 1 | 
 
 
 
 
 | 73 | #define VFT2_DRV_KEYBOARD                2 | 
 
 
 
 
 | 74 | #define VFT2_DRV_LANGUAGE                3 | 
 
 
 
 
 | 75 | #define VFT2_DRV_DISPLAY                 4 | 
 
 
 
 
 | 76 | #define VFT2_DRV_MOUSE                   5 | 
 
 
 
 
 | 77 | #define VFT2_DRV_NETWORK                 6 | 
 
 
 
 
 | 78 | #define VFT2_DRV_SYSTEM                  7 | 
 
 
 
 
 | 79 | #define VFT2_DRV_INSTALLABLE             8 | 
 
 
 
 
 | 80 | #define VFT2_DRV_SOUND                   9 | 
 
 
 
 
 | 81 | #define VFT2_DRV_COMM                   10 | 
 
 
 
 
 | 82 | #define VFT2_DRV_INPUTMETHOD            11 | 
 
 
 
 
 | 83 | #define VFT2_FONT_RASTER                 1 | 
 
 
 
 
 | 84 | #define VFT2_FONT_VECTOR                 2 | 
 
 
 
 
 | 85 | #define VFT2_FONT_TRUETYPE               3 | 
 
 
 
 
 | 86 | #define VFFF_ISSHAREDFILE                1 | 
 
 
 
 
 | 87 | #define VFF_CURNEDEST                    1 | 
 
 
 
 
 | 88 | #define VFF_FILEINUSE                    2 | 
 
 
 
 
 | 89 | #define VFF_BUFFTOOSMALL                 4 | 
 
 
 
 
 | 90 | #define VIFF_FORCEINSTALL                1 | 
 
 
 
 
 | 91 | #define VIFF_DONTDELETEOLD               2 | 
 
 
 
 
 | 92 | #define VIF_TEMPFILE                     1 | 
 
 
 
 
 | 93 | #define VIF_MISMATCH                     2 | 
 
 
 
 
 | 94 | #define VIF_SRCOLD                       4 | 
 
 
 
 
 | 95 | #define VIF_DIFFLANG                     8 | 
 
 
 
 
 | 96 | #define VIF_DIFFCODEPG                  16 | 
 
 
 
 
 | 97 | #define VIF_DIFFTYPE                    32 | 
 
 
 
 
 | 98 | #define VIF_WRITEPROT                   64 | 
 
 
 
 
 | 99 | #define VIF_FILEINUSE                  128 | 
 
 
 
 
 | 100 | #define VIF_OUTOFSPACE                 256 | 
 
 
 
 
 | 101 | #define VIF_ACCESSVIOLATION            512 | 
 
 
 
 
 | 102 | #define VIF_SHARINGVIOLATION          1024 | 
 
 
 
 
 | 103 | #define VIF_CANNOTCREATE              2048 | 
 
 
 
 
 | 104 | #define VIF_CANNOTDELETE              4096 | 
 
 
 
 
 | 105 | #define VIF_CANNOTRENAME              8192 | 
 
 
 
 
 | 106 | #define VIF_CANNOTDELETECUR          16384 | 
 
 
 
 
 | 107 | #define VIF_OUTOFMEMORY              32768 | 
 
 
 
 
 | 108 | #define VIF_CANNOTREADSRC            65536 | 
 
 
 
 
 | 109 | #define VIF_CANNOTREADDST          0x20000 | 
 
 
 
 
 | 110 | #define VIF_BUFFTOOSMALL           0x40000 | 
 
 
 
 
 | 111 |  | 
 
 
 
 
 | 112 | #ifndef RC_INVOKED | 
 
 
 
 
 | 113 |  | 
 
 
 
 
 | 114 | _BEGIN_C_DECLS | 
 
 
 
 
 | 115 |  | 
 
 
 
 
 | 116 | typedef | 
 
 
 
 
 | 117 | struct tagVS_FIXEDFILEINFO { | 
 
 
 
 
 | 118 | DWORD dwSignature; | 
 
 
 
 
 | 119 | DWORD dwStrucVersion; | 
 
 
 
 
 | 120 | DWORD dwFileVersionMS; | 
 
 
 
 
 | 121 | DWORD dwFileVersionLS; | 
 
 
 
 
 | 122 | DWORD dwProductVersionMS; | 
 
 
 
 
 | 123 | DWORD dwProductVersionLS; | 
 
 
 
 
 | 124 | DWORD dwFileFlagsMask; | 
 
 
 
 
 | 125 | DWORD dwFileFlags; | 
 
 
 
 
 | 126 | DWORD dwFileOS; | 
 
 
 
 
 | 127 | DWORD dwFileType; | 
 
 
 
 
 | 128 | DWORD dwFileSubtype; | 
 
 
 
 
 | 129 | DWORD dwFileDateMS; | 
 
 
 
 
 | 130 | DWORD dwFileDateLS; | 
 
 
 
 
 | 131 | } VS_FIXEDFILEINFO; | 
 
 
 
 
 | 132 |  | 
 
 
 
 
 | 133 | /* The following functions are each provided with prototype variants | 
 
 
 
 
 | 134 | * supporting strings in ANSI or UTF-16LE encodings, distinguised by | 
 
 
 
 
 | 135 | * the "A" suffix in the ANSI case, or the "W" suffix for UTF-16LE. | 
 
 
 
 
 | 136 | * Each pair is associated with a single generic function name, which | 
 
 
 
 
 | 137 | * is mapped to the appropriate prototype by the __AW_SUFFIXED__ macro, | 
 
 
 
 
 | 138 | * according to the defined state of the UNICODE macro; representation | 
 
 
 
 
 | 139 | * of the generic name becomes the ANSI prototype when UNICODE is NOT | 
 
 
 
 
 | 140 | * defined, or the UTF-16LE prototype when UNICODE is defined. | 
 
 
 
 
 | 141 | */ | 
 
 
 
 
 | 142 | #define VerFindFile __AW_SUFFIXED__( VerFindFile ) | 
 
 
 
 
 | 143 | DWORD WINAPI VerFindFileA( DWORD, LPSTR, LPSTR, LPSTR, LPSTR, PUINT, LPSTR, PUINT ); | 
 
 
 
 
 | 144 | DWORD WINAPI VerFindFileW( DWORD, LPWSTR, LPWSTR, LPWSTR, LPWSTR, PUINT, LPWSTR, PUINT ); | 
 
 
 
 
 | 145 |  | 
 
 
 
 
 | 146 | #define VerInstallFile __AW_SUFFIXED__( VerInstallFile ) | 
 
 
 
 
 | 147 | DWORD WINAPI VerInstallFileA( DWORD, LPSTR, LPSTR, LPSTR, LPSTR, LPSTR, LPSTR, PUINT ); | 
 
 
 
 
 | 148 | DWORD WINAPI VerInstallFileW( DWORD, LPWSTR, LPWSTR, LPWSTR, LPWSTR, LPWSTR, LPWSTR, PUINT ); | 
 
 
 
 
 | 149 |  | 
 
 
 
 
 | 150 | #define GetFileVersionInfoSize __AW_SUFFIXED__( GetFileVersionInfoSize ) | 
 
 
 
 
 | 151 | DWORD WINAPI GetFileVersionInfoSizeA( LPCSTR, PDWORD ); | 
 
 
 
 
 | 152 | DWORD WINAPI GetFileVersionInfoSizeW( LPCWSTR, PDWORD ); | 
 
 
 
 
 | 153 |  | 
 
 
 
 
 | 154 | #define GetFileVersionInfo __AW_SUFFIXED__( GetFileVersionInfo ) | 
 
 
 
 
 | 155 | BOOL WINAPI GetFileVersionInfoA( LPCSTR, DWORD, DWORD, PVOID ); | 
 
 
 
 
 | 156 | BOOL WINAPI GetFileVersionInfoW( LPCWSTR, DWORD, DWORD, PVOID ); | 
 
 
 
 
 | 157 |  | 
 
 
 
 
 | 158 | #if NTDDI_VERSION >= NTDDI_VISTA | 
 
 
 
 
 | 159 | /* Windows-Vista added extended variants of the preceding two functions, | 
 
 
 
 
 | 160 | * each taking one additional DWORD flags argument, (in first position). | 
 
 
 
 
 | 161 | * | 
 
 
 
 
 | 162 | * WARNING: Although documented as supported by Windows-Vista and later, | 
 
 
 
 
 | 163 | * the ANSI variants of these two functions appear to be unsupported in | 
 
 
 
 
 | 164 | * VERSION.DLL, prior to Windows-8.  If using these functions, you are | 
 
 
 
 
 | 165 | * advised to use a LoadLibrary/GetProcAddress (or dlopen/dlsym) probe, | 
 
 
 
 
 | 166 | * to confirm availability of the API entry points within VERSION.DLL | 
 
 
 
 
 | 167 | * on the run-time host. | 
 
 
 
 
 | 168 | */ | 
 
 
 
 
 | 169 | #define GetFileVersionInfoEx __AW_SUFFIXED__( GetFileVersionInfoEx ) | 
 
 
 
 
 | 170 | #define GetFileVersionInfoSizeEx __AW_SUFFIXED__( GetFileVersionInfoSizeEx ) | 
 
 
 
 
 | 171 | #if NTDDI_VERSION >= NTDDI_WIN8 | 
 
 
 
 
 | 172 | DWORD WINAPI GetFileVersionInfoSizeExA( DWORD, LPCSTR, PDWORD ); | 
 
 
 
 
 | 173 | BOOL WINAPI GetFileVersionInfoExA( DWORD, LPCSTR, DWORD, DWORD, PVOID ); | 
 
 
 
 
 | 174 | #endif | 
 
 
 
 
 | 175 | DWORD WINAPI GetFileVersionInfoSizeExW( DWORD, LPCWSTR, PDWORD ); | 
 
 
 
 
 | 176 | BOOL WINAPI GetFileVersionInfoExW( DWORD, LPCWSTR, DWORD, DWORD, PVOID ); | 
 
 
 
 
 | 177 |  | 
 
 
 
 
 | 178 | /* Values permitted for the flags in each of these functions; these may be | 
 
 
 
 
 | 179 | * combined by logically adding them together (using the OR operator). | 
 
 
 
 
 | 180 | */ | 
 
 
 
 
 | 181 | #define FILE_VER_GET_LOCALISED        0x01 | 
 
 
 
 
 | 182 | #define FILE_VER_GET_NEUTRAL          0x02 | 
 
 
 
 
 | 183 | /* | 
 
 
 
 
 | 184 | * ...and an additional one, for the GetFileVersionInfoEx() function | 
 
 
 
 
 | 185 | * only; (must be combined with the value derived from the preceding | 
 
 
 
 
 | 186 | * pair, as used in a prior call to GetFileVersionInfoSizeEx()). | 
 
 
 
 
 | 187 | */ | 
 
 
 
 
 | 188 | #define FILE_VER_GET_PREFETCHED       0x04 | 
 
 
 
 
 | 189 | #endif | 
 
 
 
 
 | 190 |  | 
 
 
 
 
 | 191 | #define VerLanguageName __AW_SUFFIXED__( VerLanguageName ) | 
 
 
 
 
 | 192 | DWORD WINAPI VerLanguageNameA( DWORD, LPSTR, DWORD ); | 
 
 
 
 
 | 193 | DWORD WINAPI VerLanguageNameW( DWORD, LPWSTR, DWORD ); | 
 
 
 
 
 | 194 |  | 
 
 
 
 
 | 195 | #define VerQueryValue __AW_SUFFIXED__( VerQueryValue ) | 
 
 
 
 
 | 196 | BOOL WINAPI VerQueryValueA( LPCVOID, LPCSTR, LPVOID *, PUINT ); | 
 
 
 
 
 | 197 | BOOL WINAPI VerQueryValueW( LPCVOID, LPCWSTR, LPVOID *, PUINT ); | 
 
 
 
 
 | 198 |  | 
 
 
 
 
 | 199 | _END_C_DECLS | 
 
 
 
 
 | 200 |  | 
 
 
 
 
 | 201 | #endif /* ! defined RC_INVOKED */ | 
 
 
 
 
 | 202 | #endif /* ! defined _WINVER_H: $RCSfile: winver.h,v $: end of file */ |