32 #define NONAMELESSUNION 33 #define NONAMELESSSTRUCT 39 #include "wine/winternl.h" 77 min =
dir->NumberOfNamedEntries;
164 if (
sizeof(mzh) !=
LZRead( lzfd, (
LPSTR)&mzh,
sizeof(mzh) ) )
168 if (!
memcmp( &mzh,
"\177ELF", 4 ))
return 1;
169 if (*(
UINT *)&mzh == 0xfeedface || *(
UINT *)&mzh == 0xcefaedfe)
return 1;
185 WARN(
"Can't handle %s files.\n",
magic );
206 if (
sizeof(nehd) !=
LZRead( lzfd, (
LPSTR)&nehd,
sizeof(nehd) ) )
return FALSE;
208 resTabSize = nehd.ne_restab - nehd.ne_rsrctab;
211 TRACE(
"No resources in NE dll\n" );
217 if ( !resTab )
return FALSE;
220 if ( resTabSize !=
LZRead( lzfd, (
char*)resTab, resTabSize ) )
230 if (typeInfo->
type_id ==
typeid)
goto found_type;
231 typeInfo = (
NE_TYPEINFO *)((
char *)(typeInfo + 1) +
234 TRACE(
"No typeid entry found\n" );
242 if (nameInfo->
id == resid)
goto found_name;
244 TRACE(
"No resid entry found\n" );
250 if ( resLen ) *resLen = nameInfo->
length << *(
WORD *)resTab;
251 if ( resOff ) *resOff = nameInfo->
offset << *(
WORD *)resTab;
271 DWORD section_size, data_size;
275 int i,
len, nSections;
281 if (
len <
sizeof(pehd.nt32.FileHeader))
return FALSE;
282 if (
len <
sizeof(pehd))
memset( (
char *)&pehd +
len, 0,
sizeof(pehd) -
len );
284 switch (pehd.nt32.OptionalHeader.Magic)
296 if ( !resDataDir->
Size )
298 TRACE(
"No resources in PE dll\n" );
303 nSections = pehd.nt32.FileHeader.NumberOfSections;
319 for (
i = 0;
i < nSections;
i++ )
325 if (
i == nSections )
328 TRACE(
"Couldn't find resource section\n" );
334 section_size =
max( data_size,
sections[
i].Misc.VirtualSize );
343 if (data_size !=
LZRead( lzfd, (
char*)resSection, data_size ))
goto done;
344 if (data_size < section_size)
memset( (
char *)resSection + data_size, 0, section_size - data_size );
353 TRACE(
"No typeid entry found\n" );
359 TRACE(
"No resid entry found\n" );
365 TRACE(
"No default language entry found\n" );
371 for (
i = 0;
i < nSections;
i++ )
377 if (
i == nSections )
379 TRACE(
"Couldn't find resource data section\n" );
384 if ( resLen ) *resLen = resData->
Size;
431 versioned_printer =
TRUE;
437 versioned_printer =
TRUE;
440 TRACE(
"structversion=%u.%u, ",
442 if(versioned_printer)
446 TRACE(
"fileversion=%u.%u.%u.%u (%s.major.minor.release), ",
449 (
mode == 3) ?
"Usermode" : ((
mode <= 2) ?
"Kernelmode" :
"?") );
453 TRACE(
"fileversion=%u.%u.%u.%u, ",
457 TRACE(
"productversion=%u.%u.%u.%u\n",
461 TRACE(
"flagmask=0x%x, flags=0x%x %s%s%s%s%s%s\n",
502 TRACE(
"filetype=DLL");
505 if(versioned_printer)
511 TRACE(
"filetype=DRV,");
532 TRACE(
"filetype=FONT,");
583 #define VersionInfoIs16( ver ) \ 584 ( ((const VS_VERSION_INFO_STRUCT16 *)ver)->szKey[0] >= ' ' ) 586 #define DWORD_ALIGN( base, ptr ) \ 587 ( (LPBYTE)(base) + ((((LPBYTE)(ptr) - (LPBYTE)(base)) + 3) & ~3) ) 589 #define VersionInfo16_Value( ver ) \ 590 DWORD_ALIGN( (ver), (ver)->szKey + strlen((ver)->szKey) + 1 ) 591 #define VersionInfo32_Value( ver ) \ 592 DWORD_ALIGN( (ver), (ver)->szKey + lstrlenW((ver)->szKey) + 1 ) 594 #define VersionInfo16_Children( ver ) \ 595 (const VS_VERSION_INFO_STRUCT16 *)( VersionInfo16_Value( ver ) + \ 596 ( ( (ver)->wValueLength + 3 ) & ~3 ) ) 597 #define VersionInfo32_Children( ver ) \ 598 (const VS_VERSION_INFO_STRUCT32 *)( VersionInfo32_Value( ver ) + \ 599 ( ( (ver)->wValueLength * \ 600 ((ver)->wType? 2 : 1) + 3 ) & ~3 ) ) 602 #define VersionInfo16_Next( ver ) \ 603 (VS_VERSION_INFO_STRUCT16 *)( (LPBYTE)ver + (((ver)->wLength + 3) & ~3) ) 604 #define VersionInfo32_Next( ver ) \ 605 (VS_VERSION_INFO_STRUCT32 *)( (LPBYTE)ver + (((ver)->wLength + 3) & ~3) ) 700 return (
len * 2) + 4;
740 static const char signature[4] =
"FE2X";
747 TRACE(
"(0x%x,%s,%d,size=%d,data=%p)\n",
827 TRACE(
"(0x%x,%s,%d,size=%d,data=%p)\n",
906 while ( *lpSubBlock )
910 for ( lpNextSlash = lpSubBlock; *lpNextSlash; lpNextSlash++ )
911 if ( *lpNextSlash ==
'\\' )
915 if ( lpNextSlash == lpSubBlock )
925 if (puLen) *puLen = 0 ;
931 lpSubBlock = lpNextSlash;
937 *puLen =
info->wValueLength;
952 while ( *lpSubBlock )
956 for ( lpNextSlash = lpSubBlock; *lpNextSlash; lpNextSlash++ )
957 if ( *lpNextSlash ==
'\\' )
961 if ( lpNextSlash == lpSubBlock )
971 if (puLen) *puLen = 0 ;
977 lpSubBlock = lpNextSlash;
983 *puLen =
info->wValueLength;
985 *pbText =
info->wType;
996 static const char rootA[] =
"\\";
999 TRACE(
"(%p,%s,%p,%p)\n",
1000 pBlock,
debugstr_a(lpSubBlock), lplpBuffer, puLen );
1005 if (lpSubBlock ==
NULL || lpSubBlock[0] ==
'\0')
1024 if (puLen) *puLen = value_len;
1037 *lplpBuffer = lpBufferA +
pos;
1038 if (puLen) *puLen =
len;
1053 static const WCHAR varfileinfoW[] = {
'\\',
'V',
'a',
'r',
'F',
'i',
'l',
'e',
'I',
'n',
'f',
'o',
1054 '\\',
'T',
'r',
'a',
'n',
's',
'l',
'a',
't',
'i',
'o',
'n', 0 };
1058 TRACE(
"(%p,%s,%p,%p)\n",
1059 pBlock,
debugstr_w(lpSubBlock), lplpBuffer, puLen );
1064 if (!lpSubBlock || !lpSubBlock[0])
1096 *lplpBuffer = lpBufferW +
pos;
1097 if (puLen) *puLen =
len;
1134 if(
filename[filenamelen - 1] !=
'\\')
1156 DWORD pathlen, filelen;
1202 PUINT lpuDestDirLen )
1206 const char *destDir;
1207 unsigned int curDirSizeReq;
1208 unsigned int destDirSizeReq;
1212 TRACE(
"flags = %x filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
1214 lpuCurDirLen, lpuCurDirLen ? *lpuCurDirLen : 0,
1215 lpuDestDirLen, lpuDestDirLen ? *lpuDestDirLen : 0 );
1225 destDir = systemDir;
1231 curDir = lpszAppDir;
1239 destDir = lpszAppDir ? lpszAppDir :
"";
1249 if (lpszAppDir && lpszAppDir[0])
1265 curDirSizeReq =
strlen(curDir) + 1;
1266 destDirSizeReq =
strlen(destDir) + 1;
1272 if(lpuDestDirLen && lpszDestDir)
1275 lstrcpynA(lpszDestDir, destDir, *lpuDestDirLen);
1276 *lpuDestDirLen = destDirSizeReq;
1278 if(lpuCurDirLen && lpszCurDir)
1281 lstrcpynA(lpszCurDir, curDir, *lpuCurDirLen);
1282 *lpuCurDirLen = curDirSizeReq;
1285 TRACE(
"ret = %u (%s%s%s) curdir=%s destdir=%s\n", retval,
1303 const WCHAR *curDir;
1304 const WCHAR *destDir;
1305 unsigned int curDirSizeReq;
1306 unsigned int destDirSizeReq;
1310 TRACE(
"flags = %x filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
1312 lpuCurDirLen, lpuCurDirLen ? *lpuCurDirLen : 0,
1313 lpuDestDirLen, lpuDestDirLen ? *lpuDestDirLen : 0 );
1323 destDir = systemDir;
1330 curDir = lpszAppDir;
1337 destDir = lpszAppDir ? lpszAppDir : &
emptyW;
1358 curDirSizeReq =
lstrlenW(curDir) + 1;
1359 destDirSizeReq =
lstrlenW(destDir) + 1;
1365 if(lpuDestDirLen && lpszDestDir)
1368 lstrcpynW(lpszDestDir, destDir, *lpuDestDirLen);
1369 *lpuDestDirLen = destDirSizeReq;
1371 if(lpuCurDirLen && lpszCurDir)
1374 lstrcpynW(lpszCurDir, curDir, *lpuCurDirLen);
1375 *lpuCurDirLen = curDirSizeReq;
1378 TRACE(
"ret = %u (%s%s%s) curdir=%s destdir=%s\n", retval,
1395 WARN(
"Memory exhausted while fetching version info!\n");
1409 WARN(
"Memory exhausted while fetching version info!\n");
1414 if ((*vffi)->dwSignature == 0x004f0049)
1417 WARN(
"Bad VS_FIXEDFILEINFO signature 0x%08x\n",(*vffi)->dwSignature);
1444 char destfn[260],tmpfn[260],srcfn[260];
1451 TRACE(
"(%x,%s,%s,%s,%s,%s,%p,%d)\n",
1457 sprintf(srcfn,
"%s\\%s",srcdir,srcfilename);
1458 if (!destdir || !*destdir) pdest = srcdir;
1459 else pdest = destdir;
1460 sprintf(destfn,
"%s\\%s",pdest,destfilename);
1464 sprintf(tmpfn,
"%s\\%s",pdest,destfilename);
1478 tmplast =
strlen(pdest)+1;
1519 FIXME(
"Unknown LZCopy error %d, ignoring.\n",
ret);
1536 static const CHAR trans_array[] =
"\\VarFileInfo\\Translation";
1567 if (*tmpfilelen<
strlen(tmpfn+tmplast)) {
1572 *tmpfilelen =
strlen(tmpfn+tmplast)+1;
1590 sprintf(curfn,
"%s\\%s",curdir,destfilename);
1634 if (destfilename && !
ret)
1642 if (destdir && !
ret)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
#define ERROR_INVALID_PARAMETER
struct _VS_VERSION_INFO_STRUCT32 VS_VERSION_INFO_STRUCT32
static void print_vffi_debug(const VS_FIXEDFILEINFO *vffi)
BOOL WINAPI GetFileVersionInfoExW(DWORD flags, LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
#define WideCharToMultiByte
char * strcat(char *DstString, const char *SrcString)
DWORD WINAPI VerInstallFileW(DWORD flags, LPCWSTR srcfilename, LPCWSTR destfilename, LPCWSTR srcdir, LPCWSTR destdir, LPCWSTR curdir, LPWSTR tmpfile, PUINT tmpfilelen)
ACPI_SIZE strlen(const char *String)
static GLenum _GLUfuncptr fn
static const WCHAR rootW[]
struct tagVS_FIXEDFILEINFO VS_FIXEDFILEINFO
static BOOL VersionInfo16_QueryValue(const VS_VERSION_INFO_STRUCT16 *info, LPCSTR lpSubBlock, LPVOID *lplpBuffer, UINT *puLen)
GLuint GLuint GLsizei count
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
#define VFFF_ISSHAREDFILE
#define VFT2_DRV_LANGUAGE
static int push_language(WORD *list, int pos, WORD lang)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define IMAGE_NT_OPTIONAL_HDR32_MAGIC
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
BOOL WINAPI MoveFileA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName)
DWORD WINAPI GetLastError(VOID)
LPVOID WINAPI LockResource(HGLOBAL handle)
static int testFileExistenceW(const WCHAR *path, const WCHAR *file, BOOL excl)
static DWORD _error2vif(DWORD error)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
BOOL WINAPI VerQueryValueA(LPCVOID pBlock, LPCSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
#define VersionInfo32_Next(ver)
HFILE WINAPI LZOpenFileW(LPWSTR fn, LPOFSTRUCT ofs, WORD mode)
DWORD WINAPI GetFileVersionInfoSizeExA(DWORD flags, LPCSTR filename, LPDWORD handle)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
int WINAPI _lclose(HFILE hFile)
DWORD WINAPI GetVersion(VOID)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
void WINAPI LZClose(HFILE fd)
#define IMAGE_DOS_SIGNATURE
static const WCHAR filenameW[]
#define sprintf(buf, format,...)
GLenum GLuint GLenum GLsizei const GLchar * buf
struct _OFSTRUCT OFSTRUCT
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
#define VIF_SHARINGVIOLATION
#define VersionInfoIs16(ver)
#define ERROR_ACCESS_DENIED
#define VIFF_FORCEINSTALL
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
struct section sections[2]
GLenum GLuint GLenum GLsizei length
BOOL WINAPI FreeResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
DWORD WINAPI VerInstallFileA(DWORD flags, LPCSTR srcfilename, LPCSTR destfilename, LPCSTR srcdir, LPCSTR destdir, LPCSTR curdir, LPSTR tmpfile, PUINT tmpfilelen)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
#define VersionInfo16_Value(ver)
#define VersionInfo32_Value(ver)
#define ERROR_FILE_NOT_FOUND
#define VersionInfo32_Children(ver)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
#define IMAGE_NT_SIGNATURE
static const WCHAR lang[]
_Check_return_ _CRTIMP FILE *__cdecl tmpfile(void)
static int testFileExistenceA(char const *path, char const *file, BOOL excl)
HFILE WINAPI OpenFile(LPCSTR lpFileName, LPOFSTRUCT lpReOpenBuff, UINT uStyle)
#define VS_FF_PRIVATEBUILD
static BOOL VersionInfo32_QueryValue(const VS_VERSION_INFO_STRUCT32 *info, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, UINT *puLen, BOOL *pbText)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define VersionInfo16_Next(ver)
HFILE WINAPI LZOpenFileA(LPSTR fn, LPOFSTRUCT ofs, WORD mode)
DWORD WINAPI GetFileVersionInfoSizeA(LPCSTR filename, LPDWORD handle)
DWORD WINAPI GetFileVersionInfoSizeExW(DWORD flags, LPCWSTR filename, LPDWORD handle)
#define FILE_ATTRIBUTE_READONLY
LANGID WINAPI GetSystemDefaultLangID(void)
static LPBYTE _fetch_versioninfo(LPSTR fn, VS_FIXEDFILEINFO **vffi)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define _strnicmp(_String1, _String2, _MaxCount)
DWORD WINAPI VerFindFileW(DWORD flags, LPCWSTR lpszFilename, LPCWSTR lpszWinDir, LPCWSTR lpszAppDir, LPWSTR lpszCurDir, PUINT lpuCurDirLen, LPWSTR lpszDestDir, PUINT lpuDestDirLen)
#define IMAGE_NT_OPTIONAL_HDR64_MAGIC
#define INVALID_FILE_ATTRIBUTES
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
BOOL WINAPI GetFileVersionInfoA(LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
HRSRC WINAPI FindResourceExW(HMODULE hModule, LPCWSTR type, LPCWSTR name, WORD lang)
#define VIF_CANNOTREADSRC
DWORD WINAPI GetFileVersionInfoSizeW(LPCWSTR filename, LPDWORD handle)
GLsizeiptr const GLvoid GLenum usage
#define memcpy(s1, s2, n)
#define IMAGE_OS2_SIGNATURE
#define LANGIDFROMLCID(l)
static const IMAGE_RESOURCE_DIRECTORY * find_entry_default(const IMAGE_RESOURCE_DIRECTORY *dir, const void *root)
#define LZERROR_BADOUTHANDLE
#define ERROR_SHARING_VIOLATION
LONG WINAPI LZSeek(HFILE fd, LONG off, INT type)
INT WINAPI LZRead(HFILE fd, LPSTR vbuf, INT toread)
static int read_xx_header(HFILE lzfd)
#define ERROR_INVALID_DATA
LONG WINAPI LZCopy(HFILE src, HFILE dest)
#define VS_FF_INFOINFERRED
DWORD WINAPI VerFindFileA(DWORD flags, LPCSTR lpszFilename, LPCSTR lpszWinDir, LPCSTR lpszAppDir, LPSTR lpszCurDir, PUINT lpuCurDirLen, LPSTR lpszDestDir, PUINT lpuDestDirLen)
#define LOAD_LIBRARY_AS_DATAFILE
#define VIF_ACCESSVIOLATION
#define VFT2_DRV_VERSIONED_PRINTER
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
static const WCHAR emptyW[]
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static DWORD find_version_resource(HFILE lzfd, DWORD *reslen, DWORD *offset, DWORD flags)
#define VIF_CANNOTDELETECUR
#define LZERROR_UNKNOWNALG
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
#define VFT2_DRV_INSTALLABLE
#define FIELD_OFFSET(t, f)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
#define VFT2_DRV_KEYBOARD
#define FILE_VER_GET_LOCALISED
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
#define MultiByteToWideChar
BOOL WINAPI GetFileVersionInfoW(LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
static const LCID english
#define VFT2_DRV_INPUTMETHOD
static const VS_VERSION_INFO_STRUCT16 * VersionInfo16_FindChild(const VS_VERSION_INFO_STRUCT16 *info, LPCSTR szKey, UINT cbKey)
#define VIFF_DONTDELETEOLD
char * strcpy(char *DstString, const char *SrcString)
static DWORD LPDWORD reslen
LANGID WINAPI GetUserDefaultLangID(void)
#define LZERROR_GLOBALLOC
#define VS_FF_SPECIALBUILD
static const VS_VERSION_INFO_STRUCT32 * VersionInfo32_FindChild(const VS_VERSION_INFO_STRUCT32 *info, LPCWSTR szKey, UINT cbKey)
#define MAKEINTRESOURCEW(i)
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
static const IMAGE_RESOURCE_DIRECTORY * find_entry_by_id(const IMAGE_RESOURCE_DIRECTORY *dir, WORD id, const void *root)
#define ERROR_BAD_PATHNAME
static BOOL find_pe_resource(HFILE lzfd, DWORD *resLen, DWORD *resOff, DWORD flags)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
WINE_DEFAULT_DEBUG_CHANNEL(ver)
#define HeapFree(x, y, z)
#define VersionInfo16_Children(ver)
BOOL WINAPI GetFileVersionInfoExA(DWORD flags, LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
static const IMAGE_RESOURCE_DIRECTORY * find_entry_language(const IMAGE_RESOURCE_DIRECTORY *dir, const void *root, DWORD flags)
#define LZERROR_BADINHANDLE
static BOOL find_ne_resource(HFILE lzfd, DWORD *resLen, DWORD *resOff)
#define ERROR_RESOURCE_DATA_NOT_FOUND
#define OF_SHARE_EXCLUSIVE
#define ERROR_RESOURCE_TYPE_NOT_FOUND
BOOL WINAPI VerQueryValueW(LPCVOID pBlock, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
#define VFT2_FONT_TRUETYPE