1 {******************************************************************************}
2 {                                                                              }
3 { Windows Version API interface Unit for Object Pascal                         }
4 {                                                                              }
5 { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
6 { Corporation. All Rights Reserved.                                            }
7 {                                                                              }
8 { The original file is: winver.h, released June 2000. The original Pascal      }
9 { code is: WinVer.pas, released December 2000. The initial developer of the    }
10 { Pascal code is Marcel van Brakel (brakelm att chello dott nl).               }
11 {                                                                              }
12 { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
13 { Marcel van Brakel. All Rights Reserved.                                      }
14 {                                                                              }
15 { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
16 {                                                                              }
17 { You may retrieve the latest version of this file at the Project JEDI         }
18 { APILIB home page, located at http://jedi-apilib.sourceforge.net              }
19 {                                                                              }
20 { The contents of this file are used with permission, subject to the Mozilla   }
21 { Public License Version 1.1 (the "License"); you may not use this file except }
22 { in compliance with the License. You may obtain a copy of the License at      }
23 { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
24 {                                                                              }
25 { Software distributed under the License is distributed on an "AS IS" basis,   }
26 { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
27 { the specific language governing rights and limitations under the License.    }
28 {                                                                              }
29 { Alternatively, the contents of this file may be used under the terms of the  }
30 { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
31 { provisions of the LGPL License are applicable instead of those above.        }
32 { If you wish to allow use of your version of this file only under the terms   }
33 { of the LGPL License and not to allow others to use your version of this file }
34 { under the MPL, indicate your decision by deleting  the provisions above and  }
35 { replace  them with the notice and other provisions required by the LGPL      }
36 { License.  If you do not delete the provisions above, a recipient may use     }
37 { your version of this file under either the MPL or the LGPL License.          }
38 {                                                                              }
39 { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
40 {                                                                              }
41 {******************************************************************************}
42 
43 // $Id: JwaWinVer.pas,v 1.12 2007/09/14 06:48:48 marquardt Exp $
44 
45 {$IFNDEF JWA_OMIT_SECTIONS}
46 unit JwaWinVer;
47 
48 {$WEAKPACKAGEUNIT}
49 {$ENDIF JWA_OMIT_SECTIONS}
50 
51 {$HPPEMIT ''}
52 {$HPPEMIT '#include "WinVer.h"'}
53 {$HPPEMIT ''}
54 
55 {$IFNDEF JWA_OMIT_SECTIONS}
56 {$I jediapilib.inc}
57 
58 interface
59 
60 uses
61   JwaWinUser, JwaWinType;
62 {$ENDIF JWA_OMIT_SECTIONS}
63 
64 {$IFNDEF JWA_IMPLEMENTATIONSECTION}
65 const
66 
67 //  RT_VERSION = MAKEINTRESOURCE(16);
68 
69 // ----- Symbols -----
70 
71   VS_FILE_INFO    = RT_VERSION;
72   {$EXTERNALSYM VS_FILE_INFO}
73   VS_VERSION_INFO = 1;
74   {$EXTERNALSYM VS_VERSION_INFO}
75   VS_USER_DEFINED = 100;
76   {$EXTERNALSYM VS_USER_DEFINED}
77 
78 // ----- VS_VERSION.dwFileFlags -----
79 
80   VS_FFI_SIGNATURE     = $FEEF04BD;
81   {$EXTERNALSYM VS_FFI_SIGNATURE}
82   VS_FFI_STRUCVERSION  = $00010000;
83   {$EXTERNALSYM VS_FFI_STRUCVERSION}
84   VS_FFI_FILEFLAGSMASK = $0000003F;
85   {$EXTERNALSYM VS_FFI_FILEFLAGSMASK}
86 
87 // ----- VS_VERSION.dwFileFlags -----
88 
89   VS_FF_DEBUG        = $00000001;
90   {$EXTERNALSYM VS_FF_DEBUG}
91   VS_FF_PRERELEASE   = $00000002;
92   {$EXTERNALSYM VS_FF_PRERELEASE}
93   VS_FF_PATCHED      = $00000004;
94   {$EXTERNALSYM VS_FF_PATCHED}
95   VS_FF_PRIVATEBUILD = $00000008;
96   {$EXTERNALSYM VS_FF_PRIVATEBUILD}
97   VS_FF_INFOINFERRED = $00000010;
98   {$EXTERNALSYM VS_FF_INFOINFERRED}
99   VS_FF_SPECIALBUILD = $00000020;
100   {$EXTERNALSYM VS_FF_SPECIALBUILD}
101 
102 // ----- VS_VERSION.dwFileOS -----
103 
104   VOS_UNKNOWN = $00000000;
105   {$EXTERNALSYM VOS_UNKNOWN}
106   VOS_DOS     = $00010000;
107   {$EXTERNALSYM VOS_DOS}
108   VOS_OS216   = $00020000;
109   {$EXTERNALSYM VOS_OS216}
110   VOS_OS232   = $00030000;
111   {$EXTERNALSYM VOS_OS232}
112   VOS_NT      = $00040000;
113   {$EXTERNALSYM VOS_NT}
114   VOS_WINCE   = $00050000;
115   {$EXTERNALSYM VOS_WINCE}
116 
117   VOS__BASE      = $00000000;
118   {$EXTERNALSYM VOS__BASE}
119   VOS__WINDOWS16 = $00000001;
120   {$EXTERNALSYM VOS__WINDOWS16}
121   VOS__PM16      = $00000002;
122   {$EXTERNALSYM VOS__PM16}
123   VOS__PM32      = $00000003;
124   {$EXTERNALSYM VOS__PM32}
125   VOS__WINDOWS32 = $00000004;
126   {$EXTERNALSYM VOS__WINDOWS32}
127 
128   VOS_DOS_WINDOWS16 = $00010001;
129   {$EXTERNALSYM VOS_DOS_WINDOWS16}
130   VOS_DOS_WINDOWS32 = $00010004;
131   {$EXTERNALSYM VOS_DOS_WINDOWS32}
132   VOS_OS216_PM16    = $00020002;
133   {$EXTERNALSYM VOS_OS216_PM16}
134   VOS_OS232_PM32    = $00030003;
135   {$EXTERNALSYM VOS_OS232_PM32}
136   VOS_NT_WINDOWS32  = $00040004;
137   {$EXTERNALSYM VOS_NT_WINDOWS32}
138 
139 // ----- VS_VERSION.dwFileType -----
140 
141   VFT_UNKNOWN    = $00000000;
142   {$EXTERNALSYM VFT_UNKNOWN}
143   VFT_APP        = $00000001;
144   {$EXTERNALSYM VFT_APP}
145   VFT_DLL        = $00000002;
146   {$EXTERNALSYM VFT_DLL}
147   VFT_DRV        = $00000003;
148   {$EXTERNALSYM VFT_DRV}
149   VFT_FONT       = $00000004;
150   {$EXTERNALSYM VFT_FONT}
151   VFT_VXD        = $00000005;
152   {$EXTERNALSYM VFT_VXD}
153   VFT_STATIC_LIB = $00000007;
154   {$EXTERNALSYM VFT_STATIC_LIB}
155 
156 // ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_DRV -----
157 
158   VFT2_UNKNOWN         = $00000000;
159   {$EXTERNALSYM VFT2_UNKNOWN}
160   VFT2_DRV_PRINTER     = $00000001;
161   {$EXTERNALSYM VFT2_DRV_PRINTER}
162   VFT2_DRV_KEYBOARD    = $00000002;
163   {$EXTERNALSYM VFT2_DRV_KEYBOARD}
164   VFT2_DRV_LANGUAGE    = $00000003;
165   {$EXTERNALSYM VFT2_DRV_LANGUAGE}
166   VFT2_DRV_DISPLAY     = $00000004;
167   {$EXTERNALSYM VFT2_DRV_DISPLAY}
168   VFT2_DRV_MOUSE       = $00000005;
169   {$EXTERNALSYM VFT2_DRV_MOUSE}
170   VFT2_DRV_NETWORK     = $00000006;
171   {$EXTERNALSYM VFT2_DRV_NETWORK}
172   VFT2_DRV_SYSTEM      = $00000007;
173   {$EXTERNALSYM VFT2_DRV_SYSTEM}
174   VFT2_DRV_INSTALLABLE = $00000008;
175   {$EXTERNALSYM VFT2_DRV_INSTALLABLE}
176   VFT2_DRV_SOUND       = $00000009;
177   {$EXTERNALSYM VFT2_DRV_SOUND}
178   VFT2_DRV_COMM        = $0000000A;
179   {$EXTERNALSYM VFT2_DRV_COMM}
180   VFT2_DRV_INPUTMETHOD = $0000000B;
181   {$EXTERNALSYM VFT2_DRV_INPUTMETHOD}
182   VFT2_DRV_VERSIONED_PRINTER = $0000000C;
183   {$EXTERNALSYM VFT2_DRV_VERSIONED_PRINTER}
184 
185 // ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_FONT -----
186 
187   VFT2_FONT_RASTER   = $00000001;
188   {$EXTERNALSYM VFT2_FONT_RASTER}
189   VFT2_FONT_VECTOR   = $00000002;
190   {$EXTERNALSYM VFT2_FONT_VECTOR}
191   VFT2_FONT_TRUETYPE = $00000003;
192   {$EXTERNALSYM VFT2_FONT_TRUETYPE}
193 
194 // ----- VerFindFile() flags -----
195 
196   VFFF_ISSHAREDFILE = $0001;
197   {$EXTERNALSYM VFFF_ISSHAREDFILE}
198 
199   VFF_CURNEDEST     = $0001;
200   {$EXTERNALSYM VFF_CURNEDEST}
201   VFF_FILEINUSE     = $0002;
202   {$EXTERNALSYM VFF_FILEINUSE}
203   VFF_BUFFTOOSMALL  = $0004;
204   {$EXTERNALSYM VFF_BUFFTOOSMALL}
205 
206 // ----- VerInstallFile() flags -----
207 
208   VIFF_FORCEINSTALL  = $0001;
209   {$EXTERNALSYM VIFF_FORCEINSTALL}
210   VIFF_DONTDELETEOLD = $0002;
211   {$EXTERNALSYM VIFF_DONTDELETEOLD}
212 
213   VIF_TEMPFILE = $00000001;
214   {$EXTERNALSYM VIF_TEMPFILE}
215   VIF_MISMATCH = $00000002;
216   {$EXTERNALSYM VIF_MISMATCH}
217   VIF_SRCOLD   = $00000004;
218   {$EXTERNALSYM VIF_SRCOLD}
219 
220   VIF_DIFFLANG   = $00000008;
221   {$EXTERNALSYM VIF_DIFFLANG}
222   VIF_DIFFCODEPG = $00000010;
223   {$EXTERNALSYM VIF_DIFFCODEPG}
224   VIF_DIFFTYPE   = $00000020;
225   {$EXTERNALSYM VIF_DIFFTYPE}
226 
227   VIF_WRITEPROT        = $00000040;
228   {$EXTERNALSYM VIF_WRITEPROT}
229   VIF_FILEINUSE        = $00000080;
230   {$EXTERNALSYM VIF_FILEINUSE}
231   VIF_OUTOFSPACE       = $00000100;
232   {$EXTERNALSYM VIF_OUTOFSPACE}
233   VIF_ACCESSVIOLATION  = $00000200;
234   {$EXTERNALSYM VIF_ACCESSVIOLATION}
235   VIF_SHARINGVIOLATION = $00000400;
236   {$EXTERNALSYM VIF_SHARINGVIOLATION}
237   VIF_CANNOTCREATE     = $00000800;
238   {$EXTERNALSYM VIF_CANNOTCREATE}
239   VIF_CANNOTDELETE     = $00001000;
240   {$EXTERNALSYM VIF_CANNOTDELETE}
241   VIF_CANNOTRENAME     = $00002000;
242   {$EXTERNALSYM VIF_CANNOTRENAME}
243   VIF_CANNOTDELETECUR  = $00004000;
244   {$EXTERNALSYM VIF_CANNOTDELETECUR}
245   VIF_OUTOFMEMORY      = $00008000;
246   {$EXTERNALSYM VIF_OUTOFMEMORY}
247 
248   VIF_CANNOTREADSRC = $00010000;
249   {$EXTERNALSYM VIF_CANNOTREADSRC}
250   VIF_CANNOTREADDST = $00020000;
251   {$EXTERNALSYM VIF_CANNOTREADDST}
252 
253   VIF_BUFFTOOSMALL      = $00040000;
254   {$EXTERNALSYM VIF_BUFFTOOSMALL}
255   VIF_CANNOTLOADLZ32    = $00080000;
256   {$EXTERNALSYM VIF_CANNOTLOADLZ32}
257   VIF_CANNOTLOADCABINET = $00100000;
258   {$EXTERNALSYM VIF_CANNOTLOADCABINET}
259 
260 // ----- Types and structures -----
261 
262 type
263   PVSFixedFileInfo = ^VS_FIXEDFILEINFO;
264   tagVS_FIXEDFILEINFO = record
265     dwSignature: DWORD;        // e.g. 0xfeef04bd
266     dwStrucVersion: DWORD;     // e.g. 0x00000042 = "0.42"
267     dwFileVersionMS: DWORD;    // e.g. 0x00030075 = "3.75"
268     dwFileVersionLS: DWORD;    // e.g. 0x00000031 = "0.31"
269     dwProductVersionMS: DWORD; // e.g. 0x00030010 = "3.10"
270     dwProductVersionLS: DWORD; // e.g. 0x00000031 = "0.31"
271     dwFileFlagsMask: DWORD;    // = 0x3F for version "0.42"
272     dwFileFlags: DWORD;        // e.g. VFF_DEBUG | VFF_PRERELEASE
273     dwFileOS: DWORD;           // e.g. VOS_DOS_WINDOWS16
274     dwFileType: DWORD;         // e.g. VFT_DRIVER
275     dwFileSubtype: DWORD;      // e.g. VFT2_DRV_KEYBOARD
276     dwFileDateMS: DWORD;       // e.g. 0
277     dwFileDateLS: DWORD;       // e.g. 0
278   end;
279   {$EXTERNALSYM tagVS_FIXEDFILEINFO}
280   VS_FIXEDFILEINFO = tagVS_FIXEDFILEINFO;
281   {$EXTERNALSYM VS_FIXEDFILEINFO}
282   TVSFixedFileInfo = VS_FIXEDFILEINFO;
283 
prototypesnull284 // ----- Function prototypes -----
285 
286 function VerFindFileA(uFlags: DWORD; szFileName, szWinDir, szAppDir,
287   szCurDir: LPSTR; var lpuCurDirLen: UINT; szDestDir: LPSTR;
288   var lpuDestDirLen: UINT): DWORD; stdcall;
289 {$EXTERNALSYM VerFindFileA}
VerFindFileWnull290 function VerFindFileW(uFlags: DWORD; szFileName, szWinDir, szAppDir,
291   szCurDir: LPWSTR; var lpuCurDirLen: UINT; szDestDir: LPWSTR;
292   var lpuDestDirLen: UINT): DWORD; stdcall;
293 {$EXTERNALSYM VerFindFileW}
VerFindFilenull294 function VerFindFile(uFlags: DWORD; szFileName, szWinDir, szAppDir,
295   szCurDir: LPTSTR; var lpuCurDirLen: UINT; szDestDir: LPTSTR;
296   var lpuDestDirLen: UINT): DWORD; stdcall;
297 {$EXTERNALSYM VerFindFile}
298 
VerInstallFileAnull299 function VerInstallFileA(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
300   szDestDir, szCurDir, szTmpFile: LPSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
301 {$EXTERNALSYM VerInstallFileA}
VerInstallFileWnull302 function VerInstallFileW(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
303   szDestDir, szCurDir, szTmpFile: LPWSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
304 {$EXTERNALSYM VerInstallFileW}
VerInstallFilenull305 function VerInstallFile(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
306   szDestDir, szCurDir, szTmpFile: LPTSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
307 {$EXTERNALSYM VerInstallFile}
308 
309 // Returns size of version info in bytes
310 
GetFileVersionInfoSizeAnull311 function GetFileVersionInfoSizeA(lptstrFilename: LPCSTR; var lpdwHandle: DWORD): DWORD; stdcall;
312 {$EXTERNALSYM GetFileVersionInfoSizeA}
GetFileVersionInfoSizeWnull313 function GetFileVersionInfoSizeW(lptstrFilename: LPCWSTR; var lpdwHandle: DWORD): DWORD; stdcall;
314 {$EXTERNALSYM GetFileVersionInfoSizeW}
GetFileVersionInfoSizenull315 function GetFileVersionInfoSize(lptstrFilename: LPCTSTR; var lpdwHandle: DWORD): DWORD; stdcall;
316 {$EXTERNALSYM GetFileVersionInfoSize}
317 
318 // Read version info into buffer
319 
GetFileVersionInfoAnull320 function GetFileVersionInfoA(lptstrFilename: LPCSTR; dwHandle, dwLen: DWORD;
321   lpData: LPVOID): BOOL; stdcall;
322 {$EXTERNALSYM GetFileVersionInfoA}
GetFileVersionInfoWnull323 function GetFileVersionInfoW(lptstrFilename: LPCWSTR; dwHandle, dwLen: DWORD;
324   lpData: LPVOID): BOOL; stdcall;
325 {$EXTERNALSYM GetFileVersionInfoW}
GetFileVersionInfonull326 function GetFileVersionInfo(lptstrFilename: LPCTSTR; dwHandle, dwLen: DWORD;
327   lpData: LPVOID): BOOL; stdcall;
328 {$EXTERNALSYM GetFileVersionInfo}
329 
VerLanguageNameAnull330 function VerLanguageNameA(wLang: DWORD; szLang: LPSTR; nSize: DWORD): DWORD; stdcall;
331 {$EXTERNALSYM VerLanguageNameA}
VerLanguageNameWnull332 function VerLanguageNameW(wLang: DWORD; szLang: LPWSTR; nSize: DWORD): DWORD; stdcall;
333 {$EXTERNALSYM VerLanguageNameW}
VerLanguageNamenull334 function VerLanguageName(wLang: DWORD; szLang: LPTSTR; nSize: DWORD): DWORD; stdcall;
335 {$EXTERNALSYM VerLanguageName}
336 
VerQueryValueAnull337 function VerQueryValueA(pBlock: LPVOID; lpSubBlock: LPSTR; var lplpBuffer: LPVOID;
338   var puLen: UINT): BOOL; stdcall;
339 {$EXTERNALSYM VerQueryValueA}
VerQueryValueWnull340 function VerQueryValueW(pBlock: LPVOID; lpSubBlock: LPWSTR; var lplpBuffer: LPVOID;
341   var puLen: UINT): BOOL; stdcall;
342 {$EXTERNALSYM VerQueryValueW}
VerQueryValuenull343 function VerQueryValue(pBlock: LPVOID; lpSubBlock: LPTSTR; var lplpBuffer: LPVOID;
344   var puLen: UINT): BOOL; stdcall;
345 {$EXTERNALSYM VerQueryValue}
346 
347 {$ENDIF JWA_IMPLEMENTATIONSECTION}
348 
349 {$IFNDEF JWA_OMIT_SECTIONS}
350 implementation
351 //uses ...
352 {$ENDIF JWA_OMIT_SECTIONS}
353 
354 {$IFNDEF JWA_INTERFACESECTION}
355   {$IFNDEF JWA_INCLUDEMODE}
356 const
357   versionlib = 'version.dll';
358   {$IFDEF UNICODE}
359   AWSuffix = 'W';
360   {$ELSE}
361   AWSuffix = 'A';
362   {$ENDIF UNICODE}
363   {$ENDIF JWA_INCLUDEMODE}
364 
365 {$IFDEF DYNAMIC_LINK}
366 
367 var
368   _VerFindFileA: Pointer;
369 
VerFindFileAnull370 function VerFindFileA;
371 begin
372   GetProcedureAddress(_VerFindFileA, versionlib, 'VerFindFileA');
373   asm
374         MOV     ESP, EBP
375         POP     EBP
376         JMP     [_VerFindFileA]
377   end;
378 end;
379 
380 var
381   _VerFindFileW: Pointer;
382 
VerFindFileWnull383 function VerFindFileW;
384 begin
385   GetProcedureAddress(_VerFindFileW, versionlib, 'VerFindFileW');
386   asm
387         MOV     ESP, EBP
388         POP     EBP
389         JMP     [_VerFindFileW]
390   end;
391 end;
392 
393 var
394   _VerFindFile: Pointer;
395 
VerFindFilenull396 function VerFindFile;
397 begin
398   GetProcedureAddress(_VerFindFile, versionlib, 'VerFindFile' + AWSuffix);
399   asm
400         MOV     ESP, EBP
401         POP     EBP
402         JMP     [_VerFindFile]
403   end;
404 end;
405 
406 var
407   _VerInstallFileA: Pointer;
408 
VerInstallFileAnull409 function VerInstallFileA;
410 begin
411   GetProcedureAddress(_VerInstallFileA, versionlib, 'VerInstallFileA');
412   asm
413         MOV     ESP, EBP
414         POP     EBP
415         JMP     [_VerInstallFileA]
416   end;
417 end;
418 
419 var
420   _VerInstallFileW: Pointer;
421 
VerInstallFileWnull422 function VerInstallFileW;
423 begin
424   GetProcedureAddress(_VerInstallFileW, versionlib, 'VerInstallFileW');
425   asm
426         MOV     ESP, EBP
427         POP     EBP
428         JMP     [_VerInstallFileW]
429   end;
430 end;
431 
432 var
433   _VerInstallFile: Pointer;
434 
VerInstallFilenull435 function VerInstallFile;
436 begin
437   GetProcedureAddress(_VerInstallFile, versionlib, 'VerInstallFile' + AWSuffix);
438   asm
439         MOV     ESP, EBP
440         POP     EBP
441         JMP     [_VerInstallFile]
442   end;
443 end;
444 
445 var
446   _GetFileVersionInfoSizeA: Pointer;
447 
GetFileVersionInfoSizeAnull448 function GetFileVersionInfoSizeA;
449 begin
450   GetProcedureAddress(_GetFileVersionInfoSizeA, versionlib, 'GetFileVersionInfoSizeA');
451   asm
452         MOV     ESP, EBP
453         POP     EBP
454         JMP     [_GetFileVersionInfoSizeA]
455   end;
456 end;
457 
458 var
459   _GetFileVersionInfoSizeW: Pointer;
460 
GetFileVersionInfoSizeWnull461 function GetFileVersionInfoSizeW;
462 begin
463   GetProcedureAddress(_GetFileVersionInfoSizeW, versionlib, 'GetFileVersionInfoSizeW');
464   asm
465         MOV     ESP, EBP
466         POP     EBP
467         JMP     [_GetFileVersionInfoSizeW]
468   end;
469 end;
470 
471 var
472   _GetFileVersionInfoSize: Pointer;
473 
GetFileVersionInfoSizenull474 function GetFileVersionInfoSize;
475 begin
476   GetProcedureAddress(_GetFileVersionInfoSize, versionlib, 'GetFileVersionInfoSize' + AWSuffix);
477   asm
478         MOV     ESP, EBP
479         POP     EBP
480         JMP     [_GetFileVersionInfoSize]
481   end;
482 end;
483 
484 var
485   _GetFileVersionInfoA: Pointer;
486 
GetFileVersionInfoAnull487 function GetFileVersionInfoA;
488 begin
489   GetProcedureAddress(_GetFileVersionInfoA, versionlib, 'GetFileVersionInfoA');
490   asm
491         MOV     ESP, EBP
492         POP     EBP
493         JMP     [_GetFileVersionInfoA]
494   end;
495 end;
496 
497 var
498   _GetFileVersionInfoW: Pointer;
499 
GetFileVersionInfoWnull500 function GetFileVersionInfoW;
501 begin
502   GetProcedureAddress(_GetFileVersionInfoW, versionlib, 'GetFileVersionInfoW');
503   asm
504         MOV     ESP, EBP
505         POP     EBP
506         JMP     [_GetFileVersionInfoW]
507   end;
508 end;
509 
510 var
511   _GetFileVersionInfo: Pointer;
512 
GetFileVersionInfonull513 function GetFileVersionInfo;
514 begin
515   GetProcedureAddress(_GetFileVersionInfo, versionlib, 'GetFileVersionInfo' + AWSuffix);
516   asm
517         MOV     ESP, EBP
518         POP     EBP
519         JMP     [_GetFileVersionInfo]
520   end;
521 end;
522 
523 var
524   _VerLanguageNameA: Pointer;
525 
VerLanguageNameAnull526 function VerLanguageNameA;
527 begin
528   GetProcedureAddress(_VerLanguageNameA, versionlib, 'VerLanguageNameA');
529   asm
530         MOV     ESP, EBP
531         POP     EBP
532         JMP     [_VerLanguageNameA]
533   end;
534 end;
535 
536 var
537   _VerLanguageNameW: Pointer;
538 
VerLanguageNameWnull539 function VerLanguageNameW;
540 begin
541   GetProcedureAddress(_VerLanguageNameW, versionlib, 'VerLanguageNameW');
542   asm
543         MOV     ESP, EBP
544         POP     EBP
545         JMP     [_VerLanguageNameW]
546   end;
547 end;
548 
549 var
550   _VerLanguageName: Pointer;
551 
VerLanguageNamenull552 function VerLanguageName;
553 begin
554   GetProcedureAddress(_VerLanguageName, versionlib, 'VerLanguageName' + AWSuffix);
555   asm
556         MOV     ESP, EBP
557         POP     EBP
558         JMP     [_VerLanguageName]
559   end;
560 end;
561 
562 var
563   _VerQueryValueA: Pointer;
564 
VerQueryValueAnull565 function VerQueryValueA;
566 begin
567   GetProcedureAddress(_VerQueryValueA, versionlib, 'VerQueryValueA');
568   asm
569         MOV     ESP, EBP
570         POP     EBP
571         JMP     [_VerQueryValueA]
572   end;
573 end;
574 
575 var
576   _VerQueryValueW: Pointer;
577 
VerQueryValueWnull578 function VerQueryValueW;
579 begin
580   GetProcedureAddress(_VerQueryValueW, versionlib, 'VerQueryValueW');
581   asm
582         MOV     ESP, EBP
583         POP     EBP
584         JMP     [_VerQueryValueW]
585   end;
586 end;
587 
588 var
589   _VerQueryValue: Pointer;
590 
VerQueryValuenull591 function VerQueryValue;
592 begin
593   GetProcedureAddress(_VerQueryValue, versionlib, 'VerQueryValue' + AWSuffix);
594   asm
595         MOV     ESP, EBP
596         POP     EBP
597         JMP     [_VerQueryValue]
598   end;
599 end;
600 
601 {$ELSE}
602 
VerFindFileAnull603 function VerFindFileA; external versionlib name 'VerFindFileA';
VerFindFileWnull604 function VerFindFileW; external versionlib name 'VerFindFileW';
VerFindFilenull605 function VerFindFile; external versionlib name 'VerFindFile' + AWSuffix;
VerInstallFileAnull606 function VerInstallFileA; external versionlib name 'VerInstallFileA';
VerInstallFileWnull607 function VerInstallFileW; external versionlib name 'VerInstallFileW';
VerInstallFilenull608 function VerInstallFile; external versionlib name 'VerInstallFile' + AWSuffix;
GetFileVersionInfoSizeAnull609 function GetFileVersionInfoSizeA; external versionlib name 'GetFileVersionInfoSizeA';
GetFileVersionInfoSizeWnull610 function GetFileVersionInfoSizeW; external versionlib name 'GetFileVersionInfoSizeW';
GetFileVersionInfoSizenull611 function GetFileVersionInfoSize; external versionlib name 'GetFileVersionInfoSize' + AWSuffix;
GetFileVersionInfoAnull612 function GetFileVersionInfoA; external versionlib name 'GetFileVersionInfoA';
GetFileVersionInfoWnull613 function GetFileVersionInfoW; external versionlib name 'GetFileVersionInfoW';
GetFileVersionInfonull614 function GetFileVersionInfo; external versionlib name 'GetFileVersionInfo' + AWSuffix;
VerLanguageNameAnull615 function VerLanguageNameA; external versionlib name 'VerLanguageNameA';
VerLanguageNameWnull616 function VerLanguageNameW; external versionlib name 'VerLanguageNameW';
VerLanguageNamenull617 function VerLanguageName; external versionlib name 'VerLanguageName' + AWSuffix;
VerQueryValueAnull618 function VerQueryValueA; external versionlib name 'VerQueryValueA';
VerQueryValueWnull619 function VerQueryValueW; external versionlib name 'VerQueryValueW';
VerQueryValuenull620 function VerQueryValue; external versionlib name 'VerQueryValue' + AWSuffix;
621 
622 {$ENDIF DYNAMIC_LINK}
623 
624 {$ENDIF JWA_INTERFACESECTION}
625 
626 {$IFNDEF JWA_OMIT_SECTIONS}
627 end.
628 {$ENDIF JWA_OMIT_SECTIONS}
629