| 2877 |
dpurdie |
1 |
/*****************************************************************************\
|
|
|
2 |
* *
|
|
|
3 |
* winver.h - Version management functions, types, and definitions *
|
|
|
4 |
* *
|
|
|
5 |
* Include file for VER.DLL. This library is *
|
|
|
6 |
* designed to allow version stamping of Windows executable files*
|
|
|
7 |
* and of special .VER files for DOS executable files. *
|
|
|
8 |
* *
|
|
|
9 |
* Copyright 1993 - 1998 Microsoft Corp. All rights reserved *
|
|
|
10 |
* *
|
|
|
11 |
\*****************************************************************************/
|
|
|
12 |
|
|
|
13 |
#ifndef VER_H
|
|
|
14 |
#define VER_H
|
|
|
15 |
|
|
|
16 |
#ifdef __cplusplus
|
|
|
17 |
extern "C" {
|
|
|
18 |
#endif
|
|
|
19 |
|
|
|
20 |
/* ----- Symbols ----- */
|
|
|
21 |
#define VS_FILE_INFO RT_VERSION
|
|
|
22 |
#define VS_VERSION_INFO 1
|
|
|
23 |
#define VS_USER_DEFINED 100
|
|
|
24 |
|
|
|
25 |
/* ----- VS_VERSION.dwFileFlags ----- */
|
|
|
26 |
#ifndef _MAC
|
|
|
27 |
#define VS_FFI_SIGNATURE 0xFEEF04BDL
|
|
|
28 |
#else
|
|
|
29 |
#define VS_FFI_SIGNATURE 0xBD04EFFEL
|
|
|
30 |
#endif
|
|
|
31 |
#define VS_FFI_STRUCVERSION 0x00010000L
|
|
|
32 |
#define VS_FFI_FILEFLAGSMASK 0x0000003FL
|
|
|
33 |
|
|
|
34 |
/* ----- VS_VERSION.dwFileFlags ----- */
|
|
|
35 |
#define VS_FF_DEBUG 0x00000001L
|
|
|
36 |
#define VS_FF_PRERELEASE 0x00000002L
|
|
|
37 |
#define VS_FF_PATCHED 0x00000004L
|
|
|
38 |
#define VS_FF_PRIVATEBUILD 0x00000008L
|
|
|
39 |
#define VS_FF_INFOINFERRED 0x00000010L
|
|
|
40 |
#define VS_FF_SPECIALBUILD 0x00000020L
|
|
|
41 |
|
|
|
42 |
/* ----- VS_VERSION.dwFileOS ----- */
|
|
|
43 |
#define VOS_UNKNOWN 0x00000000L
|
|
|
44 |
#define VOS_DOS 0x00010000L
|
|
|
45 |
#define VOS_OS216 0x00020000L
|
|
|
46 |
#define VOS_OS232 0x00030000L
|
|
|
47 |
#define VOS_NT 0x00040000L
|
|
|
48 |
|
|
|
49 |
#define VOS__BASE 0x00000000L
|
|
|
50 |
#define VOS__WINDOWS16 0x00000001L
|
|
|
51 |
#define VOS__PM16 0x00000002L
|
|
|
52 |
#define VOS__PM32 0x00000003L
|
|
|
53 |
#define VOS__WINDOWS32 0x00000004L
|
|
|
54 |
|
|
|
55 |
#define VOS_DOS_WINDOWS16 0x00010001L
|
|
|
56 |
#define VOS_DOS_WINDOWS32 0x00010004L
|
|
|
57 |
#define VOS_OS216_PM16 0x00020002L
|
|
|
58 |
#define VOS_OS232_PM32 0x00030003L
|
|
|
59 |
#define VOS_NT_WINDOWS32 0x00040004L
|
|
|
60 |
|
|
|
61 |
/* ----- VS_VERSION.dwFileType ----- */
|
|
|
62 |
#define VFT_UNKNOWN 0x00000000L
|
|
|
63 |
#define VFT_APP 0x00000001L
|
|
|
64 |
#define VFT_DLL 0x00000002L
|
|
|
65 |
#define VFT_DRV 0x00000003L
|
|
|
66 |
#define VFT_FONT 0x00000004L
|
|
|
67 |
#define VFT_VXD 0x00000005L
|
|
|
68 |
#define VFT_STATIC_LIB 0x00000007L
|
|
|
69 |
|
|
|
70 |
/* ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_DRV ----- */
|
|
|
71 |
#define VFT2_UNKNOWN 0x00000000L
|
|
|
72 |
#define VFT2_DRV_PRINTER 0x00000001L
|
|
|
73 |
#define VFT2_DRV_KEYBOARD 0x00000002L
|
|
|
74 |
#define VFT2_DRV_LANGUAGE 0x00000003L
|
|
|
75 |
#define VFT2_DRV_DISPLAY 0x00000004L
|
|
|
76 |
#define VFT2_DRV_MOUSE 0x00000005L
|
|
|
77 |
#define VFT2_DRV_NETWORK 0x00000006L
|
|
|
78 |
#define VFT2_DRV_SYSTEM 0x00000007L
|
|
|
79 |
#define VFT2_DRV_INSTALLABLE 0x00000008L
|
|
|
80 |
#define VFT2_DRV_SOUND 0x00000009L
|
|
|
81 |
#define VFT2_DRV_COMM 0x0000000AL
|
|
|
82 |
#define VFT2_DRV_INPUTMETHOD 0x0000000BL
|
|
|
83 |
|
|
|
84 |
/* ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_FONT ----- */
|
|
|
85 |
#define VFT2_FONT_RASTER 0x00000001L
|
|
|
86 |
#define VFT2_FONT_VECTOR 0x00000002L
|
|
|
87 |
#define VFT2_FONT_TRUETYPE 0x00000003L
|
|
|
88 |
|
|
|
89 |
/* ----- VerFindFile() flags ----- */
|
|
|
90 |
#define VFFF_ISSHAREDFILE 0x0001
|
|
|
91 |
|
|
|
92 |
#define VFF_CURNEDEST 0x0001
|
|
|
93 |
#define VFF_FILEINUSE 0x0002
|
|
|
94 |
#define VFF_BUFFTOOSMALL 0x0004
|
|
|
95 |
|
|
|
96 |
/* ----- VerInstallFile() flags ----- */
|
|
|
97 |
#define VIFF_FORCEINSTALL 0x0001
|
|
|
98 |
#define VIFF_DONTDELETEOLD 0x0002
|
|
|
99 |
|
|
|
100 |
#define VIF_TEMPFILE 0x00000001L
|
|
|
101 |
#define VIF_MISMATCH 0x00000002L
|
|
|
102 |
#define VIF_SRCOLD 0x00000004L
|
|
|
103 |
|
|
|
104 |
#define VIF_DIFFLANG 0x00000008L
|
|
|
105 |
#define VIF_DIFFCODEPG 0x00000010L
|
|
|
106 |
#define VIF_DIFFTYPE 0x00000020L
|
|
|
107 |
|
|
|
108 |
#define VIF_WRITEPROT 0x00000040L
|
|
|
109 |
#define VIF_FILEINUSE 0x00000080L
|
|
|
110 |
#define VIF_OUTOFSPACE 0x00000100L
|
|
|
111 |
#define VIF_ACCESSVIOLATION 0x00000200L
|
|
|
112 |
#define VIF_SHARINGVIOLATION 0x00000400L
|
|
|
113 |
#define VIF_CANNOTCREATE 0x00000800L
|
|
|
114 |
#define VIF_CANNOTDELETE 0x00001000L
|
|
|
115 |
#define VIF_CANNOTRENAME 0x00002000L
|
|
|
116 |
#define VIF_CANNOTDELETECUR 0x00004000L
|
|
|
117 |
#define VIF_OUTOFMEMORY 0x00008000L
|
|
|
118 |
|
|
|
119 |
#define VIF_CANNOTREADSRC 0x00010000L
|
|
|
120 |
#define VIF_CANNOTREADDST 0x00020000L
|
|
|
121 |
|
|
|
122 |
#define VIF_BUFFTOOSMALL 0x00040000L
|
|
|
123 |
|
|
|
124 |
#ifndef RC_INVOKED /* RC doesn't need to see the rest of this */
|
|
|
125 |
|
|
|
126 |
/* ----- Types and structures ----- */
|
|
|
127 |
|
|
|
128 |
typedef struct tagVS_FIXEDFILEINFO
|
|
|
129 |
{
|
|
|
130 |
DWORD dwSignature; /* e.g. 0xfeef04bd */
|
|
|
131 |
DWORD dwStrucVersion; /* e.g. 0x00000042 = "0.42" */
|
|
|
132 |
DWORD dwFileVersionMS; /* e.g. 0x00030075 = "3.75" */
|
|
|
133 |
DWORD dwFileVersionLS; /* e.g. 0x00000031 = "0.31" */
|
|
|
134 |
DWORD dwProductVersionMS; /* e.g. 0x00030010 = "3.10" */
|
|
|
135 |
DWORD dwProductVersionLS; /* e.g. 0x00000031 = "0.31" */
|
|
|
136 |
DWORD dwFileFlagsMask; /* = 0x3F for version "0.42" */
|
|
|
137 |
DWORD dwFileFlags; /* e.g. VFF_DEBUG | VFF_PRERELEASE */
|
|
|
138 |
DWORD dwFileOS; /* e.g. VOS_DOS_WINDOWS16 */
|
|
|
139 |
DWORD dwFileType; /* e.g. VFT_DRIVER */
|
|
|
140 |
DWORD dwFileSubtype; /* e.g. VFT2_DRV_KEYBOARD */
|
|
|
141 |
DWORD dwFileDateMS; /* e.g. 0 */
|
|
|
142 |
DWORD dwFileDateLS; /* e.g. 0 */
|
|
|
143 |
} VS_FIXEDFILEINFO;
|
|
|
144 |
|
|
|
145 |
/* ----- Function prototypes ----- */
|
|
|
146 |
|
|
|
147 |
DWORD
|
|
|
148 |
APIENTRY
|
|
|
149 |
VerFindFileA(
|
|
|
150 |
DWORD uFlags,
|
|
|
151 |
LPSTR szFileName,
|
|
|
152 |
LPSTR szWinDir,
|
|
|
153 |
LPSTR szAppDir,
|
|
|
154 |
LPSTR szCurDir,
|
|
|
155 |
PUINT lpuCurDirLen,
|
|
|
156 |
LPSTR szDestDir,
|
|
|
157 |
PUINT lpuDestDirLen
|
|
|
158 |
);
|
|
|
159 |
DWORD
|
|
|
160 |
APIENTRY
|
|
|
161 |
VerFindFileW(
|
|
|
162 |
DWORD uFlags,
|
|
|
163 |
LPWSTR szFileName,
|
|
|
164 |
LPWSTR szWinDir,
|
|
|
165 |
LPWSTR szAppDir,
|
|
|
166 |
LPWSTR szCurDir,
|
|
|
167 |
PUINT lpuCurDirLen,
|
|
|
168 |
LPWSTR szDestDir,
|
|
|
169 |
PUINT lpuDestDirLen
|
|
|
170 |
);
|
|
|
171 |
#ifdef UNICODE
|
|
|
172 |
#define VerFindFile VerFindFileW
|
|
|
173 |
#else
|
|
|
174 |
#define VerFindFile VerFindFileA
|
|
|
175 |
#endif // !UNICODE
|
|
|
176 |
|
|
|
177 |
DWORD
|
|
|
178 |
APIENTRY
|
|
|
179 |
VerInstallFileA(
|
|
|
180 |
DWORD uFlags,
|
|
|
181 |
LPSTR szSrcFileName,
|
|
|
182 |
LPSTR szDestFileName,
|
|
|
183 |
LPSTR szSrcDir,
|
|
|
184 |
LPSTR szDestDir,
|
|
|
185 |
LPSTR szCurDir,
|
|
|
186 |
LPSTR szTmpFile,
|
|
|
187 |
PUINT lpuTmpFileLen
|
|
|
188 |
);
|
|
|
189 |
DWORD
|
|
|
190 |
APIENTRY
|
|
|
191 |
VerInstallFileW(
|
|
|
192 |
DWORD uFlags,
|
|
|
193 |
LPWSTR szSrcFileName,
|
|
|
194 |
LPWSTR szDestFileName,
|
|
|
195 |
LPWSTR szSrcDir,
|
|
|
196 |
LPWSTR szDestDir,
|
|
|
197 |
LPWSTR szCurDir,
|
|
|
198 |
LPWSTR szTmpFile,
|
|
|
199 |
PUINT lpuTmpFileLen
|
|
|
200 |
);
|
|
|
201 |
#ifdef UNICODE
|
|
|
202 |
#define VerInstallFile VerInstallFileW
|
|
|
203 |
#else
|
|
|
204 |
#define VerInstallFile VerInstallFileA
|
|
|
205 |
#endif // !UNICODE
|
|
|
206 |
|
|
|
207 |
/* Returns size of version info in bytes */
|
|
|
208 |
DWORD
|
|
|
209 |
APIENTRY
|
|
|
210 |
GetFileVersionInfoSizeA(
|
|
|
211 |
LPSTR lptstrFilename, /* Filename of version stamped file */
|
|
|
212 |
LPDWORD lpdwHandle
|
|
|
213 |
); /* Information for use by GetFileVersionInfo */
|
|
|
214 |
/* Returns size of version info in bytes */
|
|
|
215 |
DWORD
|
|
|
216 |
APIENTRY
|
|
|
217 |
GetFileVersionInfoSizeW(
|
|
|
218 |
LPWSTR lptstrFilename, /* Filename of version stamped file */
|
|
|
219 |
LPDWORD lpdwHandle
|
|
|
220 |
); /* Information for use by GetFileVersionInfo */
|
|
|
221 |
#ifdef UNICODE
|
|
|
222 |
#define GetFileVersionInfoSize GetFileVersionInfoSizeW
|
|
|
223 |
#else
|
|
|
224 |
#define GetFileVersionInfoSize GetFileVersionInfoSizeA
|
|
|
225 |
#endif // !UNICODE
|
|
|
226 |
|
|
|
227 |
/* Read version info into buffer */
|
|
|
228 |
BOOL
|
|
|
229 |
APIENTRY
|
|
|
230 |
GetFileVersionInfoA(
|
|
|
231 |
LPSTR lptstrFilename, /* Filename of version stamped file */
|
|
|
232 |
DWORD dwHandle, /* Information from GetFileVersionSize */
|
|
|
233 |
DWORD dwLen, /* Length of buffer for info */
|
|
|
234 |
LPVOID lpData
|
|
|
235 |
); /* Buffer to place the data structure */
|
|
|
236 |
/* Read version info into buffer */
|
|
|
237 |
BOOL
|
|
|
238 |
APIENTRY
|
|
|
239 |
GetFileVersionInfoW(
|
|
|
240 |
LPWSTR lptstrFilename, /* Filename of version stamped file */
|
|
|
241 |
DWORD dwHandle, /* Information from GetFileVersionSize */
|
|
|
242 |
DWORD dwLen, /* Length of buffer for info */
|
|
|
243 |
LPVOID lpData
|
|
|
244 |
); /* Buffer to place the data structure */
|
|
|
245 |
#ifdef UNICODE
|
|
|
246 |
#define GetFileVersionInfo GetFileVersionInfoW
|
|
|
247 |
#else
|
|
|
248 |
#define GetFileVersionInfo GetFileVersionInfoA
|
|
|
249 |
#endif // !UNICODE
|
|
|
250 |
|
|
|
251 |
DWORD
|
|
|
252 |
APIENTRY
|
|
|
253 |
VerLanguageNameA(
|
|
|
254 |
DWORD wLang,
|
|
|
255 |
LPSTR szLang,
|
|
|
256 |
DWORD nSize
|
|
|
257 |
);
|
|
|
258 |
DWORD
|
|
|
259 |
APIENTRY
|
|
|
260 |
VerLanguageNameW(
|
|
|
261 |
DWORD wLang,
|
|
|
262 |
LPWSTR szLang,
|
|
|
263 |
DWORD nSize
|
|
|
264 |
);
|
|
|
265 |
#ifdef UNICODE
|
|
|
266 |
#define VerLanguageName VerLanguageNameW
|
|
|
267 |
#else
|
|
|
268 |
#define VerLanguageName VerLanguageNameA
|
|
|
269 |
#endif // !UNICODE
|
|
|
270 |
|
|
|
271 |
BOOL
|
|
|
272 |
APIENTRY
|
|
|
273 |
VerQueryValueA(
|
|
|
274 |
const LPVOID pBlock,
|
|
|
275 |
LPSTR lpSubBlock,
|
|
|
276 |
LPVOID * lplpBuffer,
|
|
|
277 |
PUINT puLen
|
|
|
278 |
);
|
|
|
279 |
BOOL
|
|
|
280 |
APIENTRY
|
|
|
281 |
VerQueryValueW(
|
|
|
282 |
const LPVOID pBlock,
|
|
|
283 |
LPWSTR lpSubBlock,
|
|
|
284 |
LPVOID * lplpBuffer,
|
|
|
285 |
PUINT puLen
|
|
|
286 |
);
|
|
|
287 |
#ifdef UNICODE
|
|
|
288 |
#define VerQueryValue VerQueryValueW
|
|
|
289 |
#else
|
|
|
290 |
#define VerQueryValue VerQueryValueA
|
|
|
291 |
#endif // !UNICODE
|
|
|
292 |
|
|
|
293 |
#endif /* !RC_INVOKED */
|
|
|
294 |
|
|
|
295 |
#ifdef __cplusplus
|
|
|
296 |
}
|
|
|
297 |
#endif
|
|
|
298 |
|
|
|
299 |
#endif /* !VER_H */
|