diff --git a/dlls/ver/.cvsignore b/dlls/ver/.cvsignore new file mode 100644 index 00000000000..f3c7a7c5da6 --- /dev/null +++ b/dlls/ver/.cvsignore @@ -0,0 +1 @@ +Makefile diff --git a/dlls/ver/Makefile.in b/dlls/ver/Makefile.in new file mode 100644 index 00000000000..c937e4267eb --- /dev/null +++ b/dlls/ver/Makefile.in @@ -0,0 +1,15 @@ +DEFS = @DLLFLAGS@ -D__WINE__ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = ver + +C_SRCS = \ + ver16.c + +all: $(MODULE).o + +@MAKE_RULES@ + +### Dependencies: diff --git a/dlls/ver/ver16.c b/dlls/ver/ver16.c new file mode 100644 index 00000000000..aa19df0d4fd --- /dev/null +++ b/dlls/ver/ver16.c @@ -0,0 +1,138 @@ +/* + * 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; +} + diff --git a/if1632/ver.spec b/if1632/ver.spec index 759f1edd06f..8f4757e12cb 100644 --- a/if1632/ver.spec +++ b/if1632/ver.spec @@ -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 diff --git a/include/ver.h b/include/ver.h index 93433b8cfcf..04802c54aef 100644 --- a/include/ver.h +++ b/include/ver.h @@ -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 */