2 * Implementation of VER.DLL
4 * Copyright 1999 Ulrich Weigand
14 /*************************************************************************
15 * GetFileResourceSize16 [VER.2]
17 DWORD WINAPI
GetFileResourceSize16( LPCSTR lpszFileName
,
18 SEGPTR spszResType
, SEGPTR spszResId
,
19 LPDWORD lpdwFileOffset
)
21 LPCSTR lpszResType
= HIWORD( spszResType
)? PTR_SEG_TO_LIN( spszResType
)
22 : (LPCSTR
)spszResType
;
23 LPCSTR lpszResId
= HIWORD( spszResId
)? PTR_SEG_TO_LIN( spszResId
)
26 return GetFileResourceSize( lpszFileName
,
27 lpszResType
, lpszResId
, lpdwFileOffset
);
30 /*************************************************************************
31 * GetFileResource16 [VER.3]
33 DWORD WINAPI
GetFileResource16( LPCSTR lpszFileName
,
34 SEGPTR spszResType
, SEGPTR spszResId
,
36 DWORD dwResLen
, LPVOID lpvData
)
38 LPCSTR lpszResType
= HIWORD( spszResType
)? PTR_SEG_TO_LIN( spszResType
)
39 : (LPCSTR
)spszResType
;
40 LPCSTR lpszResId
= HIWORD( spszResId
)? PTR_SEG_TO_LIN( spszResId
)
43 return GetFileResource( lpszFileName
, lpszResType
, lpszResId
,
44 dwFileOffset
, dwResLen
, lpvData
);
47 /*************************************************************************
48 * GetFileVersionInfoSize16 [VER.6]
50 DWORD WINAPI
GetFileVersionInfoSize16( LPCSTR lpszFileName
, LPDWORD lpdwHandle
)
52 TRACE( ver
, "(%s, %p)\n", debugstr_a(lpszFileName
), lpdwHandle
);
53 return GetFileVersionInfoSizeA( lpszFileName
, lpdwHandle
);
56 /*************************************************************************
57 * GetFileVersionInfo16 [VER.7]
59 DWORD WINAPI
GetFileVersionInfo16( LPCSTR lpszFileName
, DWORD handle
,
60 DWORD cbBuf
, LPVOID lpvData
)
62 TRACE( ver
, "(%s, %08lx, %ld, %p)\n",
63 debugstr_a(lpszFileName
), handle
, cbBuf
, lpvData
);
65 return GetFileVersionInfoA( lpszFileName
, handle
, cbBuf
, lpvData
);
68 /*************************************************************************
69 * VerFindFile16 [VER.8]
71 DWORD WINAPI
VerFindFile16( UINT16 flags
, LPCSTR lpszFilename
,
72 LPCSTR lpszWinDir
, LPCSTR lpszAppDir
,
73 LPSTR lpszCurDir
, UINT16
*lpuCurDirLen
,
74 LPSTR lpszDestDir
, UINT16
*lpuDestDirLen
)
76 UINT curDirLen
, destDirLen
;
77 DWORD retv
= VerFindFileA( flags
, lpszFilename
, lpszWinDir
, lpszAppDir
,
78 lpszCurDir
, &curDirLen
, lpszDestDir
, &destDirLen
);
80 *lpuCurDirLen
= (UINT16
)curDirLen
;
81 *lpuDestDirLen
= (UINT16
)destDirLen
;
85 /*************************************************************************
86 * VerInstallFile16 [VER.9]
88 DWORD WINAPI
VerInstallFile16( UINT16 flags
,
89 LPCSTR lpszSrcFilename
, LPCSTR lpszDestFilename
,
90 LPCSTR lpszSrcDir
, LPCSTR lpszDestDir
, LPCSTR lpszCurDir
,
91 LPSTR lpszTmpFile
, UINT16
*lpwTmpFileLen
)
94 DWORD retv
= VerInstallFileA( flags
, lpszSrcFilename
, lpszDestFilename
,
95 lpszSrcDir
, lpszDestDir
, lpszCurDir
,
96 lpszTmpFile
, &filelen
);
98 *lpwTmpFileLen
= (UINT16
)filelen
;
102 /*************************************************************************
103 * VerLanguageName16 [VER.10]
105 DWORD WINAPI
VerLanguageName16( UINT16 uLang
, LPSTR lpszLang
, UINT16 cbLang
)
107 return VerLanguageNameA( uLang
, lpszLang
, cbLang
);
110 /*************************************************************************
111 * VerQueryValue16 [VER.11]
113 DWORD WINAPI
VerQueryValue16( SEGPTR spvBlock
, LPCSTR lpszSubBlock
,
114 SEGPTR
*lpspBuffer
, UINT16
*lpcb
)
116 LPVOID lpvBlock
= PTR_SEG_TO_LIN( spvBlock
);
117 LPVOID buffer
= lpvBlock
;
121 TRACE( ver
, "(%p, %s, %p, %p)\n",
122 lpvBlock
, debugstr_a(lpszSubBlock
), lpspBuffer
, lpcb
);
124 retv
= VerQueryValueA( lpvBlock
, lpszSubBlock
, &buffer
, &buflen
);
125 if ( !retv
) return FALSE
;
127 if ( OFFSETOF( spvBlock
) + (buffer
- lpvBlock
) >= 0x10000 )
129 FIXME( ver
, "offset %08X too large relative to %04X:%04X\n",
130 buffer
- lpvBlock
, SELECTOROF( spvBlock
), OFFSETOF( spvBlock
) );
135 *lpspBuffer
= spvBlock
+ (buffer
- lpvBlock
);