Skip to content
Snippets Groups Projects
Commit 667fc3af authored by Ulrich Weigand's avatar Ulrich Weigand Committed by Alexandre Julliard
Browse files

Implementation of VER.DLL. Thunks up to VERSION.DLL.

parent 7607815b
No related branches found
No related tags found
No related merge requests found
Makefile
DEFS = @DLLFLAGS@ -D__WINE__
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = ver
C_SRCS = \
ver16.c
all: $(MODULE).o
@MAKE_RULES@
### Dependencies:
/*
* Implementation of VER.DLL
*
* Copyright 1999 Ulrich Weigand
*/
#include "windows.h"
#include "debug.h"
#include "ver.h"
#include "ldt.h"
/*************************************************************************
* GetFileResourceSize16 [VER.2]
*/
DWORD WINAPI GetFileResourceSize16( LPCSTR lpszFileName,
SEGPTR spszResType, SEGPTR spszResId,
LPDWORD lpdwFileOffset )
{
LPCSTR lpszResType = HIWORD( spszResType )? PTR_SEG_TO_LIN( spszResType )
: (LPCSTR)spszResType;
LPCSTR lpszResId = HIWORD( spszResId )? PTR_SEG_TO_LIN( spszResId )
: (LPCSTR)spszResId;
return GetFileResourceSize32( lpszFileName,
lpszResType, lpszResId, lpdwFileOffset );
}
/*************************************************************************
* GetFileResource16 [VER.3]
*/
DWORD WINAPI GetFileResource16( LPCSTR lpszFileName,
SEGPTR spszResType, SEGPTR spszResId,
DWORD dwFileOffset,
DWORD dwResLen, LPVOID lpvData )
{
LPCSTR lpszResType = HIWORD( spszResType )? PTR_SEG_TO_LIN( spszResType )
: (LPCSTR)spszResType;
LPCSTR lpszResId = HIWORD( spszResId )? PTR_SEG_TO_LIN( spszResId )
: (LPCSTR)spszResId;
return GetFileResource32( lpszFileName, lpszResType, lpszResId,
dwFileOffset, dwResLen, lpvData );
}
/*************************************************************************
* GetFileVersionInfoSize16 [VER.6]
*/
DWORD WINAPI GetFileVersionInfoSize16( LPCSTR lpszFileName, LPDWORD lpdwHandle )
{
TRACE( ver, "(%s, %p)\n", debugstr_a(lpszFileName), lpdwHandle );
return GetFileVersionInfoSize32A( lpszFileName, lpdwHandle );
}
/*************************************************************************
* GetFileVersionInfo16 [VER.7]
*/
DWORD WINAPI GetFileVersionInfo16( LPCSTR lpszFileName, DWORD handle,
DWORD cbBuf, LPVOID lpvData )
{
TRACE( ver, "(%s, %08lx, %ld, %p)\n",
debugstr_a(lpszFileName), handle, cbBuf, lpvData );
return GetFileVersionInfo32A( lpszFileName, handle, cbBuf, lpvData );
}
/*************************************************************************
* VerFindFile16 [VER.8]
*/
DWORD WINAPI VerFindFile16( UINT16 flags, LPCSTR lpszFilename,
LPCSTR lpszWinDir, LPCSTR lpszAppDir,
LPSTR lpszCurDir, UINT16 *lpuCurDirLen,
LPSTR lpszDestDir, UINT16 *lpuDestDirLen )
{
UINT32 curDirLen, destDirLen;
DWORD retv = VerFindFile32A( flags, lpszFilename, lpszWinDir, lpszAppDir,
lpszCurDir, &curDirLen, lpszDestDir, &destDirLen );
*lpuCurDirLen = (UINT16)curDirLen;
*lpuDestDirLen = (UINT16)destDirLen;
return retv;
}
/*************************************************************************
* VerInstallFile16 [VER.9]
*/
DWORD WINAPI VerInstallFile16( UINT16 flags,
LPCSTR lpszSrcFilename, LPCSTR lpszDestFilename,
LPCSTR lpszSrcDir, LPCSTR lpszDestDir, LPCSTR lpszCurDir,
LPSTR lpszTmpFile, UINT16 *lpwTmpFileLen )
{
UINT32 filelen;
DWORD retv = VerInstallFile32A( flags, lpszSrcFilename, lpszDestFilename,
lpszSrcDir, lpszDestDir, lpszCurDir,
lpszTmpFile, &filelen);
*lpwTmpFileLen = (UINT16)filelen;
return retv;
}
/*************************************************************************
* VerLanguageName16 [VER.10]
*/
DWORD WINAPI VerLanguageName16( UINT16 uLang, LPSTR lpszLang, UINT16 cbLang )
{
return VerLanguageName32A( uLang, lpszLang, cbLang );
}
/*************************************************************************
* VerQueryValue16 [VER.11]
*/
DWORD WINAPI VerQueryValue16( SEGPTR spvBlock, LPCSTR lpszSubBlock,
SEGPTR *lpspBuffer, UINT16 *lpcb )
{
LPVOID lpvBlock = PTR_SEG_TO_LIN( spvBlock );
LPVOID buffer = lpvBlock;
UINT32 buflen;
DWORD retv;
TRACE( ver, "(%p, %s, %p, %p)\n",
lpvBlock, debugstr_a(lpszSubBlock), lpspBuffer, lpcb );
retv = VerQueryValue32A( lpvBlock, lpszSubBlock, &buffer, &buflen );
if ( !retv ) return FALSE;
if ( OFFSETOF( spvBlock ) + (buffer - lpvBlock) >= 0x10000 )
{
FIXME( ver, "offset %08X too large relative to %04X:%04X\n",
buffer - lpvBlock, SELECTOROF( spvBlock ), OFFSETOF( spvBlock ) );
return FALSE;
}
*lpcb = buflen;
*lpspBuffer = spvBlock + (buffer - lpvBlock);
return retv;
}
......@@ -3,8 +3,8 @@ type win16
#1 DLLENTRYPOINT
2 pascal GetFileResourceSize(str segptr segptr ptr) GetFileResourceSize
3 pascal GetFileResource(str segptr segptr long long ptr) GetFileResource
2 pascal GetFileResourceSize(str segptr segptr ptr) GetFileResourceSize16
3 pascal GetFileResource(str segptr segptr long long ptr) GetFileResource16
6 pascal GetFileVersionInfoSize(str ptr) GetFileVersionInfoSize16
7 pascal GetFileVersionInfo(str long long ptr) GetFileVersionInfo16
8 pascal VerFindFile(word str str str ptr ptr ptr ptr) VerFindFile16
......
......@@ -130,4 +130,16 @@ typedef struct tagVS_FIXEDFILEINFO {
/* 20 GETFILEVERSIONINFORAW */
#ifdef __WINE__
DWORD WINAPI GetFileResourceSize32( LPCSTR lpszFileName,
LPCSTR lpszResType, LPCSTR lpszResId,
LPDWORD lpdwFileOffset );
DWORD WINAPI GetFileResource32( LPCSTR lpszFileName,
LPCSTR lpszResType, LPCSTR lpszResId,
DWORD dwFileOffset,
DWORD dwResLen, LPVOID lpvData );
#endif /* __WINE__ */
#endif /* __WINE_VER_H */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment