Subversion Repositories DevTools

Rev

Rev 2877 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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 */