mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-07 09:25:33 +00:00
628 lines
19 KiB
ObjectPascal
628 lines
19 KiB
ObjectPascal
{******************************************************************************}
|
|
{ }
|
|
{ Windows Version API interface Unit for Object Pascal }
|
|
{ }
|
|
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
|
|
{ Corporation. All Rights Reserved. }
|
|
{ }
|
|
{ The original file is: winver.h, released June 2000. The original Pascal }
|
|
{ code is: WinVer.pas, released December 2000. The initial developer of the }
|
|
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
|
|
{ }
|
|
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
|
|
{ Marcel van Brakel. All Rights Reserved. }
|
|
{ }
|
|
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
|
|
{ }
|
|
{ You may retrieve the latest version of this file at the Project JEDI }
|
|
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
|
|
{ }
|
|
{ The contents of this file are used with permission, subject to the Mozilla }
|
|
{ Public License Version 1.1 (the "License"); you may not use this file except }
|
|
{ in compliance with the License. You may obtain a copy of the License at }
|
|
{ http://www.mozilla.org/MPL/MPL-1.1.html }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, }
|
|
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
|
|
{ the specific language governing rights and limitations under the License. }
|
|
{ }
|
|
{ Alternatively, the contents of this file may be used under the terms of the }
|
|
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
|
|
{ provisions of the LGPL License are applicable instead of those above. }
|
|
{ If you wish to allow use of your version of this file only under the terms }
|
|
{ of the LGPL License and not to allow others to use your version of this file }
|
|
{ under the MPL, indicate your decision by deleting the provisions above and }
|
|
{ replace them with the notice and other provisions required by the LGPL }
|
|
{ License. If you do not delete the provisions above, a recipient may use }
|
|
{ your version of this file under either the MPL or the LGPL License. }
|
|
{ }
|
|
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
|
|
{ }
|
|
{******************************************************************************}
|
|
|
|
// $Id: JwaWinVer.pas,v 1.12 2007/09/14 06:48:48 marquardt Exp $
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
unit JwaWinVer;
|
|
|
|
{$WEAKPACKAGEUNIT}
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$HPPEMIT ''}
|
|
{$HPPEMIT '#include "WinVer.h"'}
|
|
{$HPPEMIT ''}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
{$I ..\Includes\JediAPILib.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
JwaWinUser, JwaWinType;
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$IFNDEF JWA_IMPLEMENTATIONSECTION}
|
|
const
|
|
|
|
// RT_VERSION = MAKEINTRESOURCE(16);
|
|
|
|
// ----- Symbols -----
|
|
|
|
VS_FILE_INFO = RT_VERSION;
|
|
{$EXTERNALSYM VS_FILE_INFO}
|
|
VS_VERSION_INFO = 1;
|
|
{$EXTERNALSYM VS_VERSION_INFO}
|
|
VS_USER_DEFINED = 100;
|
|
{$EXTERNALSYM VS_USER_DEFINED}
|
|
|
|
// ----- VS_VERSION.dwFileFlags -----
|
|
|
|
VS_FFI_SIGNATURE = $FEEF04BD;
|
|
{$EXTERNALSYM VS_FFI_SIGNATURE}
|
|
VS_FFI_STRUCVERSION = $00010000;
|
|
{$EXTERNALSYM VS_FFI_STRUCVERSION}
|
|
VS_FFI_FILEFLAGSMASK = $0000003F;
|
|
{$EXTERNALSYM VS_FFI_FILEFLAGSMASK}
|
|
|
|
// ----- VS_VERSION.dwFileFlags -----
|
|
|
|
VS_FF_DEBUG = $00000001;
|
|
{$EXTERNALSYM VS_FF_DEBUG}
|
|
VS_FF_PRERELEASE = $00000002;
|
|
{$EXTERNALSYM VS_FF_PRERELEASE}
|
|
VS_FF_PATCHED = $00000004;
|
|
{$EXTERNALSYM VS_FF_PATCHED}
|
|
VS_FF_PRIVATEBUILD = $00000008;
|
|
{$EXTERNALSYM VS_FF_PRIVATEBUILD}
|
|
VS_FF_INFOINFERRED = $00000010;
|
|
{$EXTERNALSYM VS_FF_INFOINFERRED}
|
|
VS_FF_SPECIALBUILD = $00000020;
|
|
{$EXTERNALSYM VS_FF_SPECIALBUILD}
|
|
|
|
// ----- VS_VERSION.dwFileOS -----
|
|
|
|
VOS_UNKNOWN = $00000000;
|
|
{$EXTERNALSYM VOS_UNKNOWN}
|
|
VOS_DOS = $00010000;
|
|
{$EXTERNALSYM VOS_DOS}
|
|
VOS_OS216 = $00020000;
|
|
{$EXTERNALSYM VOS_OS216}
|
|
VOS_OS232 = $00030000;
|
|
{$EXTERNALSYM VOS_OS232}
|
|
VOS_NT = $00040000;
|
|
{$EXTERNALSYM VOS_NT}
|
|
VOS_WINCE = $00050000;
|
|
{$EXTERNALSYM VOS_WINCE}
|
|
|
|
VOS__BASE = $00000000;
|
|
{$EXTERNALSYM VOS__BASE}
|
|
VOS__WINDOWS16 = $00000001;
|
|
{$EXTERNALSYM VOS__WINDOWS16}
|
|
VOS__PM16 = $00000002;
|
|
{$EXTERNALSYM VOS__PM16}
|
|
VOS__PM32 = $00000003;
|
|
{$EXTERNALSYM VOS__PM32}
|
|
VOS__WINDOWS32 = $00000004;
|
|
{$EXTERNALSYM VOS__WINDOWS32}
|
|
|
|
VOS_DOS_WINDOWS16 = $00010001;
|
|
{$EXTERNALSYM VOS_DOS_WINDOWS16}
|
|
VOS_DOS_WINDOWS32 = $00010004;
|
|
{$EXTERNALSYM VOS_DOS_WINDOWS32}
|
|
VOS_OS216_PM16 = $00020002;
|
|
{$EXTERNALSYM VOS_OS216_PM16}
|
|
VOS_OS232_PM32 = $00030003;
|
|
{$EXTERNALSYM VOS_OS232_PM32}
|
|
VOS_NT_WINDOWS32 = $00040004;
|
|
{$EXTERNALSYM VOS_NT_WINDOWS32}
|
|
|
|
// ----- VS_VERSION.dwFileType -----
|
|
|
|
VFT_UNKNOWN = $00000000;
|
|
{$EXTERNALSYM VFT_UNKNOWN}
|
|
VFT_APP = $00000001;
|
|
{$EXTERNALSYM VFT_APP}
|
|
VFT_DLL = $00000002;
|
|
{$EXTERNALSYM VFT_DLL}
|
|
VFT_DRV = $00000003;
|
|
{$EXTERNALSYM VFT_DRV}
|
|
VFT_FONT = $00000004;
|
|
{$EXTERNALSYM VFT_FONT}
|
|
VFT_VXD = $00000005;
|
|
{$EXTERNALSYM VFT_VXD}
|
|
VFT_STATIC_LIB = $00000007;
|
|
{$EXTERNALSYM VFT_STATIC_LIB}
|
|
|
|
// ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_DRV -----
|
|
|
|
VFT2_UNKNOWN = $00000000;
|
|
{$EXTERNALSYM VFT2_UNKNOWN}
|
|
VFT2_DRV_PRINTER = $00000001;
|
|
{$EXTERNALSYM VFT2_DRV_PRINTER}
|
|
VFT2_DRV_KEYBOARD = $00000002;
|
|
{$EXTERNALSYM VFT2_DRV_KEYBOARD}
|
|
VFT2_DRV_LANGUAGE = $00000003;
|
|
{$EXTERNALSYM VFT2_DRV_LANGUAGE}
|
|
VFT2_DRV_DISPLAY = $00000004;
|
|
{$EXTERNALSYM VFT2_DRV_DISPLAY}
|
|
VFT2_DRV_MOUSE = $00000005;
|
|
{$EXTERNALSYM VFT2_DRV_MOUSE}
|
|
VFT2_DRV_NETWORK = $00000006;
|
|
{$EXTERNALSYM VFT2_DRV_NETWORK}
|
|
VFT2_DRV_SYSTEM = $00000007;
|
|
{$EXTERNALSYM VFT2_DRV_SYSTEM}
|
|
VFT2_DRV_INSTALLABLE = $00000008;
|
|
{$EXTERNALSYM VFT2_DRV_INSTALLABLE}
|
|
VFT2_DRV_SOUND = $00000009;
|
|
{$EXTERNALSYM VFT2_DRV_SOUND}
|
|
VFT2_DRV_COMM = $0000000A;
|
|
{$EXTERNALSYM VFT2_DRV_COMM}
|
|
VFT2_DRV_INPUTMETHOD = $0000000B;
|
|
{$EXTERNALSYM VFT2_DRV_INPUTMETHOD}
|
|
VFT2_DRV_VERSIONED_PRINTER = $0000000C;
|
|
{$EXTERNALSYM VFT2_DRV_VERSIONED_PRINTER}
|
|
|
|
// ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_FONT -----
|
|
|
|
VFT2_FONT_RASTER = $00000001;
|
|
{$EXTERNALSYM VFT2_FONT_RASTER}
|
|
VFT2_FONT_VECTOR = $00000002;
|
|
{$EXTERNALSYM VFT2_FONT_VECTOR}
|
|
VFT2_FONT_TRUETYPE = $00000003;
|
|
{$EXTERNALSYM VFT2_FONT_TRUETYPE}
|
|
|
|
// ----- VerFindFile() flags -----
|
|
|
|
VFFF_ISSHAREDFILE = $0001;
|
|
{$EXTERNALSYM VFFF_ISSHAREDFILE}
|
|
|
|
VFF_CURNEDEST = $0001;
|
|
{$EXTERNALSYM VFF_CURNEDEST}
|
|
VFF_FILEINUSE = $0002;
|
|
{$EXTERNALSYM VFF_FILEINUSE}
|
|
VFF_BUFFTOOSMALL = $0004;
|
|
{$EXTERNALSYM VFF_BUFFTOOSMALL}
|
|
|
|
// ----- VerInstallFile() flags -----
|
|
|
|
VIFF_FORCEINSTALL = $0001;
|
|
{$EXTERNALSYM VIFF_FORCEINSTALL}
|
|
VIFF_DONTDELETEOLD = $0002;
|
|
{$EXTERNALSYM VIFF_DONTDELETEOLD}
|
|
|
|
VIF_TEMPFILE = $00000001;
|
|
{$EXTERNALSYM VIF_TEMPFILE}
|
|
VIF_MISMATCH = $00000002;
|
|
{$EXTERNALSYM VIF_MISMATCH}
|
|
VIF_SRCOLD = $00000004;
|
|
{$EXTERNALSYM VIF_SRCOLD}
|
|
|
|
VIF_DIFFLANG = $00000008;
|
|
{$EXTERNALSYM VIF_DIFFLANG}
|
|
VIF_DIFFCODEPG = $00000010;
|
|
{$EXTERNALSYM VIF_DIFFCODEPG}
|
|
VIF_DIFFTYPE = $00000020;
|
|
{$EXTERNALSYM VIF_DIFFTYPE}
|
|
|
|
VIF_WRITEPROT = $00000040;
|
|
{$EXTERNALSYM VIF_WRITEPROT}
|
|
VIF_FILEINUSE = $00000080;
|
|
{$EXTERNALSYM VIF_FILEINUSE}
|
|
VIF_OUTOFSPACE = $00000100;
|
|
{$EXTERNALSYM VIF_OUTOFSPACE}
|
|
VIF_ACCESSVIOLATION = $00000200;
|
|
{$EXTERNALSYM VIF_ACCESSVIOLATION}
|
|
VIF_SHARINGVIOLATION = $00000400;
|
|
{$EXTERNALSYM VIF_SHARINGVIOLATION}
|
|
VIF_CANNOTCREATE = $00000800;
|
|
{$EXTERNALSYM VIF_CANNOTCREATE}
|
|
VIF_CANNOTDELETE = $00001000;
|
|
{$EXTERNALSYM VIF_CANNOTDELETE}
|
|
VIF_CANNOTRENAME = $00002000;
|
|
{$EXTERNALSYM VIF_CANNOTRENAME}
|
|
VIF_CANNOTDELETECUR = $00004000;
|
|
{$EXTERNALSYM VIF_CANNOTDELETECUR}
|
|
VIF_OUTOFMEMORY = $00008000;
|
|
{$EXTERNALSYM VIF_OUTOFMEMORY}
|
|
|
|
VIF_CANNOTREADSRC = $00010000;
|
|
{$EXTERNALSYM VIF_CANNOTREADSRC}
|
|
VIF_CANNOTREADDST = $00020000;
|
|
{$EXTERNALSYM VIF_CANNOTREADDST}
|
|
|
|
VIF_BUFFTOOSMALL = $00040000;
|
|
{$EXTERNALSYM VIF_BUFFTOOSMALL}
|
|
VIF_CANNOTLOADLZ32 = $00080000;
|
|
{$EXTERNALSYM VIF_CANNOTLOADLZ32}
|
|
VIF_CANNOTLOADCABINET = $00100000;
|
|
{$EXTERNALSYM VIF_CANNOTLOADCABINET}
|
|
|
|
// ----- Types and structures -----
|
|
|
|
type
|
|
PVSFixedFileInfo = ^VS_FIXEDFILEINFO;
|
|
tagVS_FIXEDFILEINFO = record
|
|
dwSignature: DWORD; // e.g. 0xfeef04bd
|
|
dwStrucVersion: DWORD; // e.g. 0x00000042 = "0.42"
|
|
dwFileVersionMS: DWORD; // e.g. 0x00030075 = "3.75"
|
|
dwFileVersionLS: DWORD; // e.g. 0x00000031 = "0.31"
|
|
dwProductVersionMS: DWORD; // e.g. 0x00030010 = "3.10"
|
|
dwProductVersionLS: DWORD; // e.g. 0x00000031 = "0.31"
|
|
dwFileFlagsMask: DWORD; // = 0x3F for version "0.42"
|
|
dwFileFlags: DWORD; // e.g. VFF_DEBUG | VFF_PRERELEASE
|
|
dwFileOS: DWORD; // e.g. VOS_DOS_WINDOWS16
|
|
dwFileType: DWORD; // e.g. VFT_DRIVER
|
|
dwFileSubtype: DWORD; // e.g. VFT2_DRV_KEYBOARD
|
|
dwFileDateMS: DWORD; // e.g. 0
|
|
dwFileDateLS: DWORD; // e.g. 0
|
|
end;
|
|
{$EXTERNALSYM tagVS_FIXEDFILEINFO}
|
|
VS_FIXEDFILEINFO = tagVS_FIXEDFILEINFO;
|
|
{$EXTERNALSYM VS_FIXEDFILEINFO}
|
|
TVSFixedFileInfo = VS_FIXEDFILEINFO;
|
|
|
|
// ----- Function prototypes -----
|
|
|
|
function VerFindFileA(uFlags: DWORD; szFileName, szWinDir, szAppDir,
|
|
szCurDir: LPSTR; var lpuCurDirLen: UINT; szDestDir: LPSTR;
|
|
var lpuDestDirLen: UINT): DWORD; stdcall;
|
|
{$EXTERNALSYM VerFindFileA}
|
|
function VerFindFileW(uFlags: DWORD; szFileName, szWinDir, szAppDir,
|
|
szCurDir: LPWSTR; var lpuCurDirLen: UINT; szDestDir: LPWSTR;
|
|
var lpuDestDirLen: UINT): DWORD; stdcall;
|
|
{$EXTERNALSYM VerFindFileW}
|
|
function VerFindFile(uFlags: DWORD; szFileName, szWinDir, szAppDir,
|
|
szCurDir: LPTSTR; var lpuCurDirLen: UINT; szDestDir: LPTSTR;
|
|
var lpuDestDirLen: UINT): DWORD; stdcall;
|
|
{$EXTERNALSYM VerFindFile}
|
|
|
|
function VerInstallFileA(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
|
|
szDestDir, szCurDir, szTmpFile: LPSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
|
|
{$EXTERNALSYM VerInstallFileA}
|
|
function VerInstallFileW(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
|
|
szDestDir, szCurDir, szTmpFile: LPWSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
|
|
{$EXTERNALSYM VerInstallFileW}
|
|
function VerInstallFile(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
|
|
szDestDir, szCurDir, szTmpFile: LPTSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
|
|
{$EXTERNALSYM VerInstallFile}
|
|
|
|
// Returns size of version info in bytes
|
|
|
|
function GetFileVersionInfoSizeA(lptstrFilename: LPCSTR; var lpdwHandle: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFileVersionInfoSizeA}
|
|
function GetFileVersionInfoSizeW(lptstrFilename: LPCWSTR; var lpdwHandle: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFileVersionInfoSizeW}
|
|
function GetFileVersionInfoSize(lptstrFilename: LPCTSTR; var lpdwHandle: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFileVersionInfoSize}
|
|
|
|
// Read version info into buffer
|
|
|
|
function GetFileVersionInfoA(lptstrFilename: LPCSTR; dwHandle, dwLen: DWORD;
|
|
lpData: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileVersionInfoA}
|
|
function GetFileVersionInfoW(lptstrFilename: LPCWSTR; dwHandle, dwLen: DWORD;
|
|
lpData: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileVersionInfoW}
|
|
function GetFileVersionInfo(lptstrFilename: LPCTSTR; dwHandle, dwLen: DWORD;
|
|
lpData: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileVersionInfo}
|
|
|
|
function VerLanguageNameA(wLang: DWORD; szLang: LPSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM VerLanguageNameA}
|
|
function VerLanguageNameW(wLang: DWORD; szLang: LPWSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM VerLanguageNameW}
|
|
function VerLanguageName(wLang: DWORD; szLang: LPTSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM VerLanguageName}
|
|
|
|
function VerQueryValueA(pBlock: LPVOID; lpSubBlock: LPSTR; var lplpBuffer: LPVOID;
|
|
var puLen: UINT): BOOL; stdcall;
|
|
{$EXTERNALSYM VerQueryValueA}
|
|
function VerQueryValueW(pBlock: LPVOID; lpSubBlock: LPWSTR; var lplpBuffer: LPVOID;
|
|
var puLen: UINT): BOOL; stdcall;
|
|
{$EXTERNALSYM VerQueryValueW}
|
|
function VerQueryValue(pBlock: LPVOID; lpSubBlock: LPTSTR; var lplpBuffer: LPVOID;
|
|
var puLen: UINT): BOOL; stdcall;
|
|
{$EXTERNALSYM VerQueryValue}
|
|
|
|
{$ENDIF JWA_IMPLEMENTATIONSECTION}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
implementation
|
|
//uses ...
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$IFNDEF JWA_INTERFACESECTION}
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
const
|
|
versionlib = 'version.dll';
|
|
{$IFDEF UNICODE}
|
|
AWSuffix = 'W';
|
|
{$ELSE}
|
|
AWSuffix = 'A';
|
|
{$ENDIF UNICODE}
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$IFDEF DYNAMIC_LINK}
|
|
|
|
var
|
|
_VerFindFileA: Pointer;
|
|
|
|
function VerFindFileA;
|
|
begin
|
|
GetProcedureAddress(_VerFindFileA, versionlib, 'VerFindFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerFindFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerFindFileW: Pointer;
|
|
|
|
function VerFindFileW;
|
|
begin
|
|
GetProcedureAddress(_VerFindFileW, versionlib, 'VerFindFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerFindFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerFindFile: Pointer;
|
|
|
|
function VerFindFile;
|
|
begin
|
|
GetProcedureAddress(_VerFindFile, versionlib, 'VerFindFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerFindFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerInstallFileA: Pointer;
|
|
|
|
function VerInstallFileA;
|
|
begin
|
|
GetProcedureAddress(_VerInstallFileA, versionlib, 'VerInstallFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerInstallFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerInstallFileW: Pointer;
|
|
|
|
function VerInstallFileW;
|
|
begin
|
|
GetProcedureAddress(_VerInstallFileW, versionlib, 'VerInstallFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerInstallFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerInstallFile: Pointer;
|
|
|
|
function VerInstallFile;
|
|
begin
|
|
GetProcedureAddress(_VerInstallFile, versionlib, 'VerInstallFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerInstallFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileVersionInfoSizeA: Pointer;
|
|
|
|
function GetFileVersionInfoSizeA;
|
|
begin
|
|
GetProcedureAddress(_GetFileVersionInfoSizeA, versionlib, 'GetFileVersionInfoSizeA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileVersionInfoSizeA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileVersionInfoSizeW: Pointer;
|
|
|
|
function GetFileVersionInfoSizeW;
|
|
begin
|
|
GetProcedureAddress(_GetFileVersionInfoSizeW, versionlib, 'GetFileVersionInfoSizeW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileVersionInfoSizeW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileVersionInfoSize: Pointer;
|
|
|
|
function GetFileVersionInfoSize;
|
|
begin
|
|
GetProcedureAddress(_GetFileVersionInfoSize, versionlib, 'GetFileVersionInfoSize' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileVersionInfoSize]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileVersionInfoA: Pointer;
|
|
|
|
function GetFileVersionInfoA;
|
|
begin
|
|
GetProcedureAddress(_GetFileVersionInfoA, versionlib, 'GetFileVersionInfoA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileVersionInfoA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileVersionInfoW: Pointer;
|
|
|
|
function GetFileVersionInfoW;
|
|
begin
|
|
GetProcedureAddress(_GetFileVersionInfoW, versionlib, 'GetFileVersionInfoW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileVersionInfoW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileVersionInfo: Pointer;
|
|
|
|
function GetFileVersionInfo;
|
|
begin
|
|
GetProcedureAddress(_GetFileVersionInfo, versionlib, 'GetFileVersionInfo' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileVersionInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerLanguageNameA: Pointer;
|
|
|
|
function VerLanguageNameA;
|
|
begin
|
|
GetProcedureAddress(_VerLanguageNameA, versionlib, 'VerLanguageNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerLanguageNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerLanguageNameW: Pointer;
|
|
|
|
function VerLanguageNameW;
|
|
begin
|
|
GetProcedureAddress(_VerLanguageNameW, versionlib, 'VerLanguageNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerLanguageNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerLanguageName: Pointer;
|
|
|
|
function VerLanguageName;
|
|
begin
|
|
GetProcedureAddress(_VerLanguageName, versionlib, 'VerLanguageName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerLanguageName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerQueryValueA: Pointer;
|
|
|
|
function VerQueryValueA;
|
|
begin
|
|
GetProcedureAddress(_VerQueryValueA, versionlib, 'VerQueryValueA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerQueryValueA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerQueryValueW: Pointer;
|
|
|
|
function VerQueryValueW;
|
|
begin
|
|
GetProcedureAddress(_VerQueryValueW, versionlib, 'VerQueryValueW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerQueryValueW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerQueryValue: Pointer;
|
|
|
|
function VerQueryValue;
|
|
begin
|
|
GetProcedureAddress(_VerQueryValue, versionlib, 'VerQueryValue' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerQueryValue]
|
|
end;
|
|
end;
|
|
|
|
{$ELSE}
|
|
|
|
function VerFindFileA; external versionlib name 'VerFindFileA';
|
|
function VerFindFileW; external versionlib name 'VerFindFileW';
|
|
function VerFindFile; external versionlib name 'VerFindFile' + AWSuffix;
|
|
function VerInstallFileA; external versionlib name 'VerInstallFileA';
|
|
function VerInstallFileW; external versionlib name 'VerInstallFileW';
|
|
function VerInstallFile; external versionlib name 'VerInstallFile' + AWSuffix;
|
|
function GetFileVersionInfoSizeA; external versionlib name 'GetFileVersionInfoSizeA';
|
|
function GetFileVersionInfoSizeW; external versionlib name 'GetFileVersionInfoSizeW';
|
|
function GetFileVersionInfoSize; external versionlib name 'GetFileVersionInfoSize' + AWSuffix;
|
|
function GetFileVersionInfoA; external versionlib name 'GetFileVersionInfoA';
|
|
function GetFileVersionInfoW; external versionlib name 'GetFileVersionInfoW';
|
|
function GetFileVersionInfo; external versionlib name 'GetFileVersionInfo' + AWSuffix;
|
|
function VerLanguageNameA; external versionlib name 'VerLanguageNameA';
|
|
function VerLanguageNameW; external versionlib name 'VerLanguageNameW';
|
|
function VerLanguageName; external versionlib name 'VerLanguageName' + AWSuffix;
|
|
function VerQueryValueA; external versionlib name 'VerQueryValueA';
|
|
function VerQueryValueW; external versionlib name 'VerQueryValueW';
|
|
function VerQueryValue; external versionlib name 'VerQueryValue' + AWSuffix;
|
|
|
|
{$ENDIF DYNAMIC_LINK}
|
|
|
|
{$ENDIF JWA_INTERFACESECTION}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
end.
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|