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;
174 if ( 2 !=
LZRead( lzfd, magic, 2 ) )
179 if ( magic[0] ==
'N' && magic[1] ==
'E' )
181 if ( magic[0] ==
'P' && magic[1] ==
'E' )
185 WARN(
"Can't handle %s files.\n", magic );
206 if (
sizeof(nehd) !=
LZRead( lzfd, (
LPSTR)&nehd,
sizeof(nehd) ) )
return FALSE;
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;
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;
986 if (!
info->wValueLength)
991 *puLen =
info->wValueLength;
993 *pbText =
info->wType;
1004 static const char rootA[] =
"\\";
1007 TRACE(
"(%p,%s,%p,%p)\n",
1008 pBlock,
debugstr_a(lpSubBlock), lplpBuffer, puLen );
1013 if (lpSubBlock ==
NULL || lpSubBlock[0] ==
'\0')
1032 if (puLen) *puLen = value_len;
1045 *lplpBuffer = lpBufferA +
pos;
1046 if (puLen) *puLen =
len;
1061 static const WCHAR varfileinfoW[] = {
'\\',
'V',
'a',
'r',
'F',
'i',
'l',
'e',
'I',
'n',
'f',
'o',
1062 '\\',
'T',
'r',
'a',
'n',
's',
'l',
'a',
't',
'i',
'o',
'n', 0 };
1066 TRACE(
"(%p,%s,%p,%p)\n",
1067 pBlock,
debugstr_w(lpSubBlock), lplpBuffer, puLen );
1072 if (!lpSubBlock || !lpSubBlock[0])
1104 *lplpBuffer = lpBufferW +
pos;
1105 if (puLen) *puLen =
len;
1142 if(
filename[filenamelen - 1] !=
'\\')
1164 DWORD pathlen, filelen;
1210 PUINT lpuDestDirLen )
1214 const char *destDir;
1215 unsigned int curDirSizeReq;
1216 unsigned int destDirSizeReq;
1220 TRACE(
"flags = %x filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
1222 lpuCurDirLen, lpuCurDirLen ? *lpuCurDirLen : 0,
1223 lpuDestDirLen, lpuDestDirLen ? *lpuDestDirLen : 0 );
1233 destDir = systemDir;
1239 curDir = lpszAppDir;
1247 destDir = lpszAppDir ? lpszAppDir :
"";
1257 if (lpszAppDir && lpszAppDir[0])
1273 curDirSizeReq =
strlen(curDir) + 1;
1274 destDirSizeReq =
strlen(destDir) + 1;
1280 if(lpuDestDirLen && lpszDestDir)
1283 lstrcpynA(lpszDestDir, destDir, *lpuDestDirLen);
1284 *lpuDestDirLen = destDirSizeReq;
1286 if(lpuCurDirLen && lpszCurDir)
1289 lstrcpynA(lpszCurDir, curDir, *lpuCurDirLen);
1290 *lpuCurDirLen = curDirSizeReq;
1293 TRACE(
"ret = %u (%s%s%s) curdir=%s destdir=%s\n",
retval,
1311 const WCHAR *curDir;
1312 const WCHAR *destDir;
1313 unsigned int curDirSizeReq;
1314 unsigned int destDirSizeReq;
1318 TRACE(
"flags = %x filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
1320 lpuCurDirLen, lpuCurDirLen ? *lpuCurDirLen : 0,
1321 lpuDestDirLen, lpuDestDirLen ? *lpuDestDirLen : 0 );
1331 destDir = systemDir;
1338 curDir = lpszAppDir;
1345 destDir = lpszAppDir ? lpszAppDir : &
emptyW;
1366 curDirSizeReq =
lstrlenW(curDir) + 1;
1367 destDirSizeReq =
lstrlenW(destDir) + 1;
1373 if(lpuDestDirLen && lpszDestDir)
1376 lstrcpynW(lpszDestDir, destDir, *lpuDestDirLen);
1377 *lpuDestDirLen = destDirSizeReq;
1379 if(lpuCurDirLen && lpszCurDir)
1382 lstrcpynW(lpszCurDir, curDir, *lpuCurDirLen);
1383 *lpuCurDirLen = curDirSizeReq;
1386 TRACE(
"ret = %u (%s%s%s) curdir=%s destdir=%s\n",
retval,
1403 WARN(
"Memory exhausted while fetching version info!\n");
1417 WARN(
"Memory exhausted while fetching version info!\n");
1422 if ((*vffi)->dwSignature == 0x004f0049)
1425 WARN(
"Bad VS_FIXEDFILEINFO signature 0x%08x\n",(*vffi)->dwSignature);
1452 char destfn[260],tmpfn[260],srcfn[260];
1459 TRACE(
"(%x,%s,%s,%s,%s,%s,%p,%d)\n",
1465 sprintf(srcfn,
"%s\\%s",srcdir,srcfilename);
1466 if (!destdir || !*destdir) pdest = srcdir;
1467 else pdest = destdir;
1468 sprintf(destfn,
"%s\\%s",pdest,destfilename);
1472 sprintf(tmpfn,
"%s\\%s",pdest,destfilename);
1486 tmplast =
strlen(pdest)+1;
1527 FIXME(
"Unknown LZCopy error %d, ignoring.\n",
ret);
1544 static const CHAR trans_array[] =
"\\VarFileInfo\\Translation";
1575 if (*tmpfilelen<
strlen(tmpfn+tmplast)) {
1580 *tmpfilelen =
strlen(tmpfn+tmplast)+1;
1598 sprintf(curfn,
"%s\\%s",curdir,destfilename);
1642 if (destfilename && !
ret)
1650 if (destdir && !
ret)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR rootW[]
struct tagVS_FIXEDFILEINFO VS_FIXEDFILEINFO
#define ERROR_INVALID_PARAMETER
#define _strnicmp(_String1, _String2, _MaxCount)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
HFILE WINAPI OpenFile(LPCSTR lpFileName, LPOFSTRUCT lpReOpenBuff, UINT uStyle)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
BOOL WINAPI MoveFileA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
BOOL WINAPI FreeResource(HGLOBAL handle)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
LPVOID WINAPI LockResource(HGLOBAL handle)
HRSRC WINAPI FindResourceExW(HMODULE hModule, LPCWSTR type, LPCWSTR name, WORD lang)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
LANGID WINAPI GetSystemDefaultLangID(void)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
LANGID WINAPI GetUserDefaultLangID(void)
BOOL WINAPI GetFileVersionInfoExA(DWORD flags, LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
DWORD WINAPI VerFindFileA(DWORD flags, LPCSTR lpszFilename, LPCSTR lpszWinDir, LPCSTR lpszAppDir, LPSTR lpszCurDir, PUINT lpuCurDirLen, LPSTR lpszDestDir, PUINT lpuDestDirLen)
static const IMAGE_RESOURCE_DIRECTORY * find_entry_default(const IMAGE_RESOURCE_DIRECTORY *dir, const void *root)
#define VersionInfo32_Next(ver)
DWORD WINAPI GetFileVersionInfoSizeA(LPCSTR filename, LPDWORD handle)
static const IMAGE_RESOURCE_DIRECTORY * find_entry_language(const IMAGE_RESOURCE_DIRECTORY *dir, const void *root, DWORD flags)
BOOL WINAPI GetFileVersionInfoExW(DWORD flags, LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
static const VS_VERSION_INFO_STRUCT32 * VersionInfo32_FindChild(const VS_VERSION_INFO_STRUCT32 *info, LPCWSTR szKey, UINT cbKey)
static BOOL VersionInfo16_QueryValue(const VS_VERSION_INFO_STRUCT16 *info, LPCSTR lpSubBlock, LPVOID *lplpBuffer, UINT *puLen)
static void print_vffi_debug(const VS_FIXEDFILEINFO *vffi)
static int read_xx_header(HFILE lzfd)
static BOOL VersionInfo32_QueryValue(const VS_VERSION_INFO_STRUCT32 *info, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, UINT *puLen, BOOL *pbText)
BOOL WINAPI VerQueryValueA(LPCVOID pBlock, LPCSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
#define VersionInfo16_Value(ver)
#define VersionInfo16_Next(ver)
#define VersionInfo32_Value(ver)
BOOL WINAPI GetFileVersionInfoW(LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
static LPBYTE _fetch_versioninfo(LPSTR fn, VS_FIXEDFILEINFO **vffi)
static DWORD _error2vif(DWORD error)
static const VS_VERSION_INFO_STRUCT16 * VersionInfo16_FindChild(const VS_VERSION_INFO_STRUCT16 *info, LPCSTR szKey, UINT cbKey)
static int push_language(WORD *list, int pos, WORD lang)
static int testFileExistenceA(char const *path, char const *file, BOOL excl)
static BOOL find_pe_resource(HFILE lzfd, DWORD *resLen, DWORD *resOff, DWORD flags)
DWORD WINAPI GetFileVersionInfoSizeExA(DWORD flags, LPCSTR filename, LPDWORD handle)
#define VersionInfoIs16(ver)
BOOL WINAPI GetFileVersionInfoA(LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
BOOL WINAPI VerQueryValueW(LPCVOID pBlock, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
DWORD WINAPI VerFindFileW(DWORD flags, LPCWSTR lpszFilename, LPCWSTR lpszWinDir, LPCWSTR lpszAppDir, LPWSTR lpszCurDir, PUINT lpuCurDirLen, LPWSTR lpszDestDir, PUINT lpuDestDirLen)
static int testFileExistenceW(const WCHAR *path, const WCHAR *file, BOOL excl)
#define VersionInfo32_Children(ver)
static DWORD find_version_resource(HFILE lzfd, DWORD *reslen, DWORD *offset, DWORD flags)
DWORD WINAPI GetFileVersionInfoSizeW(LPCWSTR filename, LPDWORD handle)
static const IMAGE_RESOURCE_DIRECTORY * find_entry_by_id(const IMAGE_RESOURCE_DIRECTORY *dir, WORD id, const void *root)
DWORD WINAPI VerInstallFileA(DWORD flags, LPCSTR srcfilename, LPCSTR destfilename, LPCSTR srcdir, LPCSTR destdir, LPCSTR curdir, LPSTR tmpfile, PUINT tmpfilelen)
DWORD WINAPI GetFileVersionInfoSizeExW(DWORD flags, LPCWSTR filename, LPDWORD handle)
#define VersionInfo16_Children(ver)
static BOOL find_ne_resource(HFILE lzfd, DWORD *resLen, DWORD *resOff)
DWORD WINAPI VerInstallFileW(DWORD flags, LPCWSTR srcfilename, LPCWSTR destfilename, LPCWSTR srcdir, LPCWSTR destdir, LPCWSTR curdir, LPWSTR tmpfile, PUINT tmpfilelen)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizeiptr const GLvoid GLenum usage
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
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
static const WCHAR emptyW[]
_Check_return_ _CRTIMP FILE *__cdecl tmpfile(void)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
int WINAPI _lclose(HFILE hFile)
LONG WINAPI LZSeek(HFILE fd, LONG off, INT type)
INT WINAPI LZRead(HFILE fd, LPSTR vbuf, INT toread)
HFILE WINAPI LZOpenFileW(LPWSTR fn, LPOFSTRUCT ofs, WORD mode)
LONG WINAPI LZCopy(HFILE src, HFILE dest)
void WINAPI LZClose(HFILE fd)
HFILE WINAPI LZOpenFileA(LPSTR fn, LPOFSTRUCT ofs, WORD mode)
#define LZERROR_GLOBALLOC
#define LZERROR_UNKNOWNALG
#define LZERROR_BADINHANDLE
#define LZERROR_BADOUTHANDLE
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
#define sprintf(buf, format,...)
static const WCHAR filenameW[]
static DWORD LPDWORD reslen
struct section sections[2]
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
#define FILE_ATTRIBUTE_READONLY
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define IMAGE_NT_OPTIONAL_HDR32_MAGIC
#define IMAGE_NT_OPTIONAL_HDR64_MAGIC
#define IMAGE_NT_SIGNATURE
#define IMAGE_OS2_SIGNATURE
#define IMAGE_DOS_SIGNATURE
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
DWORD WINAPI GetVersion()
_CRT_RESTORE_GCC_WARNINGS _CRT_DISABLE_GCC_WARNINGS _Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
_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 LANGIDFROMLCID(l)
#define FIELD_OFFSET(t, f)
#define VIFF_FORCEINSTALL
#define VIF_CANNOTREADSRC
#define VS_FF_INFOINFERRED
#define VIFF_DONTDELETEOLD
#define FILE_VER_GET_LOCALISED
#define VIF_CANNOTDELETECUR
#define VS_FF_SPECIALBUILD
#define VFT2_FONT_TRUETYPE
#define VFT2_DRV_LANGUAGE
#define VFT2_DRV_VERSIONED_PRINTER
#define VIF_ACCESSVIOLATION
#define VFT2_DRV_INSTALLABLE
#define VIF_SHARINGVIOLATION
#define VFT2_DRV_INPUTMETHOD
#define VFT2_DRV_KEYBOARD
#define VS_FF_PRIVATEBUILD
#define VFFF_ISSHAREDFILE
#define INVALID_FILE_ATTRIBUTES
static const WCHAR lang[]
static const LCID english
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
static GLenum _GLUfuncptr fn
DWORD WINAPI GetLastError(void)
#define LOAD_LIBRARY_AS_DATAFILE
#define OF_SHARE_EXCLUSIVE
struct _OFSTRUCT OFSTRUCT
#define ERROR_SHARING_VIOLATION
#define ERROR_BAD_PATHNAME
#define ERROR_RESOURCE_TYPE_NOT_FOUND
#define ERROR_RESOURCE_DATA_NOT_FOUND
#define ERROR_INVALID_DATA
#define MAKEINTRESOURCEW(i)