32#define WIN32_NO_STATUS
102#define VersionInfoIs16( ver ) \
103 ( ((const VS_VERSION_INFO_STRUCT16 *)ver)->szKey[0] >= ' ' )
105#define DWORD_ALIGN( base, ptr ) \
106 ( (LPBYTE)(base) + ((((LPBYTE)(ptr) - (LPBYTE)(base)) + 3) & ~3) )
108#define VersionInfo16_Value( ver ) \
109 DWORD_ALIGN( (ver), (ver)->szKey + strlen((ver)->szKey) + 1 )
110#define VersionInfo32_Value( ver ) \
111 DWORD_ALIGN( (ver), (ver)->szKey + lstrlenW((ver)->szKey) + 1 )
113#define VersionInfo16_Children( ver ) \
114 (const VS_VERSION_INFO_STRUCT16 *)( VersionInfo16_Value( ver ) + \
115 ( ( (ver)->wValueLength + 3 ) & ~3 ) )
116#define VersionInfo32_Children( ver ) \
117 (const VS_VERSION_INFO_STRUCT32 *)( VersionInfo32_Value( ver ) + \
118 ( ( (ver)->wValueLength * \
119 ((ver)->wType? 2 : 1) + 3 ) & ~3 ) )
121#define VersionInfo16_Next( ver ) \
122 (VS_VERSION_INFO_STRUCT16 *)( (LPBYTE)ver + (((ver)->wLength + 3) & ~3) )
123#define VersionInfo32_Next( ver ) \
124 (VS_VERSION_INFO_STRUCT32 *)( (LPBYTE)ver + (((ver)->wLength + 3) & ~3) )
153 {0x1f676c76,0x80e1,0x4239,{0x95,0xbb,0x83,0xd0,0xf6,0xd0,0xda,0x78}}
158 {0x8e0f7a12,0xbfb3,0x4fe8,{0xb9,0xa5,0x48,0xfd,0x50,0xa1,0x5a,0x9a}}
180 COMPATIBILITY_CONTEXT_ELEMENT Elements[1];
212 CompatibilityInformationInActivationContext, acci, req, &req) ==
STATUS_SUCCESS)
218 for (
i = 0;
i < acci->ElementCount;
i++)
220 if (acci->Elements[
i].Type != ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS)
223 have_os_compat_elements =
TRUE;
278 min =
dir->NumberOfNamedEntries;
384 DWORD nehdoffset = *resOff;
395 TRACE(
"No resources in NE dll\n" );
401 if ( !resTab )
return FALSE;
413 if (typeInfo->
type_id ==
typeid)
goto found_type;
414 typeInfo = (
NE_TYPEINFO *)((
char *)(typeInfo + 1) +
417 TRACE(
"No typeid entry found\n" );
425 if (nameInfo->
id == resid)
goto found_name;
427 TRACE(
"No resid entry found\n" );
433 *resLen = nameInfo->
length << *(
WORD *)resTab;
434 *resOff = nameInfo->
offset << *(
WORD *)resTab;
450 DWORD pehdoffset = *resOff;
454 DWORD len, section_size, data_size, resDirSize;
463 if (
len <
sizeof(pehd.nt32.FileHeader))
return FALSE;
464 if (
len <
sizeof(pehd))
memset( (
char *)&pehd +
len, 0,
sizeof(pehd) -
len );
466 switch (pehd.nt32.OptionalHeader.Magic)
478 if ( !resDataDir->
Size )
480 TRACE(
"No resources in PE dll\n" );
485 nSections = pehd.nt32.FileHeader.NumberOfSections;
499 for (
i = 0;
i < nSections;
i++ )
505 if (
i == nSections )
508 TRACE(
"Couldn't find resource section\n" );
514 section_size =
max( data_size,
sections[
i].Misc.VirtualSize );
523 if (data_size < section_size)
memset( (
char *)resSection + data_size, 0, section_size - data_size );
533 TRACE(
"No typeid entry found\n" );
539 TRACE(
"No resid entry found\n" );
545 TRACE(
"No default language entry found\n" );
551 for (
i = 0;
i < nSections;
i++ )
557 if (
i == nSections )
559 TRACE(
"Couldn't find resource data section\n" );
564 *resLen = resData->
Size;
583 if (
read_data(
handle, 0, &mzh,
sizeof(mzh) ) !=
sizeof(mzh))
return 0;
598 WARN(
"Can't handle %04x files.\n", magic );
614 versioned_printer =
TRUE;
620 versioned_printer =
TRUE;
623 TRACE(
"structversion=%u.%u, ",
625 if(versioned_printer)
629 TRACE(
"fileversion=%lu.%u.%u.%u (%s.major.minor.release), ",
632 (
mode == 3) ?
"Usermode" : ((
mode <= 2) ?
"Kernelmode" :
"?") );
636 TRACE(
"fileversion=%u.%u.%u.%u, ",
640 TRACE(
"productversion=%u.%u.%u.%u\n",
644 TRACE(
"flagmask=0x%lx, flags=0x%lx %s%s%s%s%s%s\n",
685 TRACE(
"filetype=DLL");
688 if(versioned_printer)
694 TRACE(
"filetype=DRV,");
715 TRACE(
"filetype=FONT,");
761 if (ret_handle) *ret_handle = 0;
827 return (
len * 2) + 4;
870 TRACE(
"(0x%lx,%s,%ld,size=%ld,data=%p)\n",
949 TRACE(
"(0x%lx,%s,%ld,size=%ld,data=%p)\n",
1028 while ( *lpSubBlock )
1032 for ( lpNextSlash = lpSubBlock; *lpNextSlash; lpNextSlash++ )
1033 if ( *lpNextSlash ==
'\\' )
1037 if ( lpNextSlash == lpSubBlock )
1047 if (puLen) *puLen = 0 ;
1053 lpSubBlock = lpNextSlash;
1059 *puLen =
info->wValueLength;
1074 while ( *lpSubBlock )
1078 for ( lpNextSlash = lpSubBlock; *lpNextSlash; lpNextSlash++ )
1079 if ( *lpNextSlash ==
'\\' )
1083 if ( lpNextSlash == lpSubBlock )
1093 if (puLen) *puLen = 0 ;
1099 lpSubBlock = lpNextSlash;
1105 *puLen =
info->wValueLength;
1107 *pbText =
info->wType;
1118 static const char rootA[] =
"\\";
1121 TRACE(
"(%p,%s,%p,%p)\n",
1122 pBlock,
debugstr_a(lpSubBlock), lplpBuffer, puLen );
1127 if (lpSubBlock ==
NULL || lpSubBlock[0] ==
'\0')
1146 if (puLen) *puLen = value_len;
1159 *lplpBuffer = lpBufferA +
pos;
1160 if (puLen) *puLen =
len;
1176 TRACE(
"(%p,%s,%p,%p)\n",
1177 pBlock,
debugstr_w(lpSubBlock), lplpBuffer, puLen );
1182 if (!lpSubBlock || !lpSubBlock[0])
1203 if (
ret &&
wcscmp( lpSubBlock,
L"\\" ) &&
wcsicmp( lpSubBlock,
L"\\VarFileInfo\\Translation" ))
1214 *lplpBuffer = lpBufferW +
pos;
1215 if (puLen) *puLen =
len;
1286 const char *destDir;
1289 TRACE(
"flags = %lx filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
1291 curdir_len, curdir_len ? *curdir_len : 0, dest_len, dest_len ? *dest_len : 0 );
1301 destDir = systemDir;
1342 if (dest_len &&
dest)
1349 if (curdir_len && cur_dir)
1353 lstrcpynA(cur_dir, curDir, *curdir_len);
1357 TRACE(
"ret = %lu (%s%s%s) curdir=%s destdir=%s\n",
retval,
1373 const WCHAR *curDir;
1374 const WCHAR *destDir;
1376 TRACE(
"flags = %lx filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
1378 curdir_len, curdir_len ? *curdir_len : 0, dest_len, dest_len ? *dest_len : 0 );
1421 if (dest_len &&
dest)
1428 if (curdir_len && cur_dir)
1432 lstrcpynW(cur_dir, curDir, *curdir_len);
1436 TRACE(
"ret = %lu (%s%s%s) curdir=%s destdir=%s\n",
retval,
1463 info.dwOSVersionInfoSize =
sizeof(
info);
1467 (
info.dwPlatformId ^ 2) << 14 );
1485 WARN(
"wrong OSVERSIONINFO size from app (got: %ld)\n",
info->dwOSVersionInfoSize );
1493 info->dwMajorVersion =
infoW.dwMajorVersion;
1494 info->dwMinorVersion =
infoW.dwMinorVersion;
1495 info->dwBuildNumber =
infoW.dwBuildNumber;
1496 info->dwPlatformId =
infoW.dwPlatformId;
1522 WARN(
"wrong OSVERSIONINFO size from app (got: %ld)\n",
info->dwOSVersionInfoSize );
1621 if (!
count || !buffer_len)
1652 {PROCESSOR_ARCHITECTURE_NEUTRAL,
L"neutral"},
1653 {PROCESSOR_ARCHITECTURE_ARM64,
L"arm64"},
1672 const WCHAR *
name, *version_str, *arch_str, *resource_id, *publisher_id, *
s;
1673 PACKAGE_ID *
id = (PACKAGE_ID *)
buffer;
1676 TRACE(
"full_name %s, flags %#x, buffer_length %p, buffer %p.\n",
1680 FIXME(
"Flags %#x are not supported.\n",
flags);
1682 if (!full_name || !buffer_length)
1685 if (!
buffer && *buffer_length)
1693 if (!(arch_str =
wcschr(version_str,
L'_')))
1697 if (!(resource_id =
wcschr(arch_str,
L'_')))
1701 if (!(publisher_id =
wcschr(resource_id,
L'_')))
1706 size =
sizeof(*id) +
sizeof(
WCHAR) * ((version_str -
name) + (publisher_id - resource_id) + 13 + 1);
1708 *buffer_length =
size;
1712 memset(
id, 0,
sizeof(*
id));
1720 id->version.Major =
wcstol(version_str,
NULL, 10);
1721 if (!(
s =
wcschr(version_str,
L'.')))
1738 buffer +=
sizeof(*
id->name) * (
len + 1);
1741 len = publisher_id - resource_id - 1;
1742 memcpy(
id->resourceId, resource_id,
sizeof(*
id->resourceId) *
len);
1743 id->resourceId[
len] = 0;
1744 buffer +=
sizeof(*
id->resourceId) * (
len + 1);
1750 memcpy(
id->publisherId, publisher_id,
sizeof(*
id->publisherId) *
len);
1751 id->publisherId[
len] = 0;
ACPI_SIZE strlen(const char *String)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
NTSTATUS NTAPI RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
static __inline BOOL set_ntstatus(NTSTATUS status)
struct tagVS_FIXEDFILEINFO VS_FIXEDFILEINFO
#define ERROR_INVALID_PARAMETER
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define HeapFree(x, y, z)
#define FILE_ATTRIBUTE_NORMAL
#define WideCharToMultiByte
#define MultiByteToWideChar
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
DWORD WINAPI SearchPathA(IN LPCSTR lpPath OPTIONAL, IN LPCSTR lpFileName, IN LPCSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPSTR lpBuffer, OUT LPSTR *lpFilePart OPTIONAL)
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
BOOL WINAPI GetVersionExW(IN LPOSVERSIONINFOW lpVersionInformation)
BOOL WINAPI GetVersionExA(IN LPOSVERSIONINFOA lpVersionInformation)
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
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)
LANGID WINAPI GetUserDefaultLangID(void)
const WCHAR windows_dir[]
BOOL WINAPI GetFileVersionInfoExA(DWORD flags, LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
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)
DWORD WINAPI VerFindFileA(DWORD flags, LPCSTR filename, LPCSTR win_dir, LPCSTR app_dir, LPSTR cur_dir, PUINT curdir_len, LPSTR dest, PUINT dest_len)
static BOOL CALLBACK init_current_version(PINIT_ONCE init_once, PVOID parameter, PVOID *context)
BOOL WINAPI DECLSPEC_HOTPATCH GetProductInfo(DWORD os_major, DWORD os_minor, DWORD sp_major, DWORD sp_minor, DWORD *type)
static DWORD find_version_resource(HANDLE handle, DWORD *reslen, DWORD *offset, DWORD flags)
static BOOL file_existsW(const WCHAR *path, const WCHAR *file, BOOL excl)
LONG WINAPI GetPackageFullName(HANDLE process, UINT32 *length, WCHAR *name)
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)
LONG WINAPI GetCurrentPackagePath(UINT32 *length, WCHAR *path)
static BOOL find_pe_resource(HANDLE handle, DWORD *resLen, DWORD *resOff, DWORD flags)
static BOOL VersionInfo32_QueryValue(const VS_VERSION_INFO_STRUCT32 *info, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, UINT *puLen, BOOL *pbText)
static const IMAGE_RESOURCE_DIRECTORY * find_entry_language(const IMAGE_RESOURCE_DIRECTORY *dir, const void *root, DWORD root_size, DWORD flags)
BOOL WINAPI VerQueryValueA(LPCVOID pBlock, LPCSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
LONG WINAPI GetCurrentPackageId(UINT32 *len, BYTE *buffer)
#define VersionInfo16_Value(ver)
#define VersionInfo16_Next(ver)
static UINT32 processor_arch_from_string(const WCHAR *str, unsigned int len)
DWORD WINAPI GetVersion(void)
#define VersionInfo32_Value(ver)
static BOOL file_existsA(char const *path, char const *file, BOOL excl)
static const struct @527 version_data[]
BOOL WINAPI GetFileVersionInfoW(LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
static RTL_OSVERSIONINFOEXW current_version
static BOOL find_ne_resource(HANDLE handle, DWORD *resLen, DWORD *resOff)
static const IMAGE_RESOURCE_DIRECTORY * find_entry_by_id(const IMAGE_RESOURCE_DIRECTORY *dir, WORD id, const void *root, DWORD root_size)
LONG WINAPI GetPackageFamilyName(HANDLE process, UINT32 *length, WCHAR *name)
static int push_language(WORD *list, int pos, WORD lang)
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)
static const struct version_info windows8_1_version_info
DWORD WINAPI VerFindFileW(DWORD flags, LPCWSTR filename, LPCWSTR win_dir, LPCWSTR app_dir, LPWSTR cur_dir, PUINT curdir_len, LPWSTR dest, PUINT dest_len)
#define VersionInfo32_Children(ver)
LONG WINAPI GetCurrentPackageFullName(UINT32 *length, WCHAR *name)
DWORD WINAPI GetFileVersionInfoSizeW(LPCWSTR filename, LPDWORD handle)
static const VS_VERSION_INFO_STRUCT32 * VersionInfo32_FindChild(const VS_VERSION_INFO_STRUCT32 *info, LPCWSTR key, UINT len)
BOOL WINAPI GetFileVersionInfoExW(DWORD flags, LPCWSTR filename, DWORD ignored, DWORD datasize, LPVOID data)
static const struct @528 arch_names[]
LONG WINAPI GetPackagePathByFullName(const WCHAR *name, UINT32 *len, WCHAR *path)
static const VS_VERSION_INFO_STRUCT16 * VersionInfo16_FindChild(const VS_VERSION_INFO_STRUCT16 *info, LPCSTR key, UINT len)
#define VersionInfo16_Children(ver)
LONG WINAPI GetCurrentPackageFamilyName(UINT32 *length, WCHAR *name)
LONG WINAPI PackageIdFromFullName(const WCHAR *full_name, UINT32 flags, UINT32 *buffer_length, BYTE *buffer)
DWORD WINAPI GetFileVersionInfoSizeExW(DWORD flags, LPCWSTR filename, LPDWORD ret_handle)
LONG WINAPI DECLSPEC_HOTPATCH GetPackagesByPackageFamily(const WCHAR *family_name, UINT32 *count, WCHAR *full_names, UINT32 *buffer_len, WCHAR *buffer)
LONG WINAPI GetCurrentPackageInfo(const UINT32 flags, UINT32 *buffer_size, BYTE *buffer, UINT32 *count)
static const struct version_info windows8_version_info
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLuint GLsizei GLsizei * length
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
NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T *)
static const SecPkgInfoW infoW
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static const WCHAR filenameW[]
static WCHAR app_dir[MAX_PATH]
static DWORD LPDWORD reslen
static ULONG POBJECT_ATTRIBUTES PIO_STATUS_BLOCK ULONG sharing
struct section sections[2]
#define PROCESSOR_ARCHITECTURE_ARM
#define PROCESSOR_ARCHITECTURE_UNKNOWN
#define PROCESSOR_ARCHITECTURE_AMD64
#define PROCESSOR_ARCHITECTURE_INTEL
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
#define VER_PLATFORM_WIN32_NT
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
#define IsEqualGUID(rguid1, rguid2)
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define LANGIDFROMLCID(l)
#define DECLSPEC_HOTPATCH
#define STATUS_BUFFER_TOO_SMALL
wchar_t const *const size_t const buffer_size
ULONG dwOSVersionInfoSize
PVOID ActivationContextData
T1_FIELD_DICT_FONTDICT family_name
#define FIELD_OFFSET(t, f)
#define VS_FF_INFOINFERRED
#define FILE_VER_GET_LOCALISED
#define VS_FF_SPECIALBUILD
#define VFT2_FONT_TRUETYPE
#define VFT2_DRV_LANGUAGE
#define VFT2_DRV_VERSIONED_PRINTER
#define VFT2_DRV_INSTALLABLE
#define VFT2_DRV_INPUTMETHOD
#define VFT2_DRV_KEYBOARD
#define VS_FF_PRIVATEBUILD
#define VFFF_ISSHAREDFILE
static const WCHAR lang[]
static const LCID english
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
#define LOAD_LIBRARY_AS_IMAGE_RESOURCE
#define INIT_ONCE_STATIC_INIT
#define APPMODEL_ERROR_NO_PACKAGE
#define ERROR_BAD_PATHNAME
#define ERROR_RESOURCE_TYPE_NOT_FOUND
#define ERROR_RESOURCE_DATA_NOT_FOUND
#define ERROR_INVALID_DATA
#define MAKEINTRESOURCEW(i)
NTSYSAPI BOOLEAN NTAPI RtlGetProductInfo(_In_ ULONG OSMajorVersion, _In_ ULONG OSMinorVersion, _In_ ULONG SpMajorVersion, _In_ ULONG SpMinorVersion, _Out_ PULONG ReturnedProductType)