OSDN Git Service

Prepare environment for Earnie's tools.
[mingw/mingw-org-wsl.git] / wslapi / include / winver.h
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$
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$: end of file */