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;
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)
char * strcat(char *DstString, const char *SrcString)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
char * strcpy(char *DstString, const char *SrcString)
#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)
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)
LANGID WINAPI GetSystemDefaultLangID(void)
LANGID WINAPI GetUserDefaultLangID(void)
int WINAPI _lclose(HFILE hFile)
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
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()
_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)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
#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)