178 nt = (
void*) &
dos[1];
208 sec = (
void*) &
nt[1];
253 ok(
res ==
NULL,
"BeginUpdateResource should fail\n");
269 ok(
res !=
NULL,
"BeginUpdateResource failed\n");
278 ok(
r ==
FALSE,
"EndUpdateResource failed\n");
281 skip(
"Can't update resource in empty file\n" );
284 ok(
res ==
NULL,
"BeginUpdateResource failed\n");
293 ok(
res !=
NULL,
"BeginUpdateResource failed\n");
296 ok(
r,
"EndUpdateResource failed\n");
305 ok(
res !=
NULL,
"BeginUpdateResource failed\n");
308 ok(
r,
"EndUpdateResource failed\n");
315 char foo[] =
"red and white";
318 ok(
res !=
NULL,
"BeginUpdateResource failed\n");
327 ok(
r ==
FALSE,
"UpdateResource failed\n");
348 ok(
res !=
NULL,
"BeginUpdateResource succeeded\n");
358 ok(
r,
"EndUpdateResource failed\n");
363 char foo[] =
"resource data", res_name[] =
"name", res_type[] =
"type";
414 ok(
dos !=
NULL,
"failed to map file\n");
421 sec = (
void*) &
nt[1];
440 ok(
dir->Characteristics == 0,
"Characteristics wrong\n");
441 ok(
dir->TimeDateStamp == 0,
"TimeDateStamp wrong %lu\n",
dir->TimeDateStamp);
442 ok(
dir->MajorVersion == 4,
"MajorVersion wrong\n");
443 ok(
dir->MinorVersion == 0,
"MinorVersion wrong\n");
447 ok(
dir->NumberOfIdEntries == verify->
NumberOfIdEntries,
"NumberOfIdEntries should be %ld instead of %d\n",
451 "VirtualAddress in optional header should be %ld instead of %ld\n",
468 ok( rsrc != 0,
"resource not found\n" );
471 ok( rsrc != 0,
"resource not found\n" );
474 ok( rsrc != 0,
"resource not found\n" );
478 ok( !rsrc,
"resource found\n" );
483 ok( !rsrc,
"resource found\n" );
489 ok( !rsrc,
"resource found\n" );
495 ok( !rsrc,
"resource found\n" );
509 WCHAR *res_filenameW;
512 ok(
res !=
NULL,
"BeginUpdateResourceW failed\n" );
514 ok( res_data !=
NULL,
"GlobalLock failed\n" );
516 ok( res_filenameW !=
NULL,
"GlobalLock for res_filenameW failed\n" );
518 ok(
GlobalUnlock( res_filenameW ),
"GlobalUnlock res_filenamed failed\n" );
530 {
IMAGE_DOS_SIGNATURE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { 0 }, 0, 0, { 0 },
537#elif defined __x86_64__
541#elif defined __aarch64__
544# error You must specify the machine type
585 { { 0 }, { 0 }, { 0x1000, 0x1000 } }
588 {
".rsrc\0\0", { 0 }, 0x1000, 0x1000, 0, 0, 0, 0, 0,
639 MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN >> 1,
640 0, 0, {
's',
'c'}, {
'c'}, {0}, 0, 0, {0},
646 {
'M',
'U',
'I',0,0}, {
RT_CURSOR}, {
'M',
'U',
'I',0,0}, {
RT_STRING}, {0}, {
'e',
'n',
'-',
'U',
'S',0},
649 MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI >> 1,
650 0, 0, {
's',
'c'}, {
'c'}, {0}, 0, 0, {0},
654 {
'M',
'U',
'I',0,0}, {
RT_STRING}, {0}, {0}, {
'e',
'n',
'-',
'U',
'S',0}
659#if defined(__REACTOS__) && DLL_EXPORT_VERSION < 0x600
660 skip(
"Cannot build test_mui() unless DLL_EXPORT_VERSION >= 0x600.\n");
662 static const WCHAR ln_dll[] =
L"test_mui.dll";
663 static const WCHAR en_dll[] =
L"en-US\\test_mui.dll.mui";
664 static const BYTE zeros[16] = { 0 };
674 ok( !
r,
"GetFileMUIInfo succeeded\n" );
691 ok( !
r,
"GetFileMUIInfo succeeded\n" );
696 info->dwVersion = MUI_FILEINFO_VERSION;
699 ok(
info->dwSize ==
sizeof(
buf),
"dwSize = %ld\n",
info->dwSize );
700 ok(
info->dwVersion == MUI_FILEINFO_VERSION,
"dwVersion = %ld\n",
info->dwVersion );
701 ok(
info->dwFileType == MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL,
"dwFileType = %ld\n",
info->dwFileType );
702 ok( !
memcmp(
info->pChecksum, zeros,
sizeof(
info->pChecksum)),
"pChecksum = %s\n",
704 ok( !
memcmp(
info->pServiceChecksum, zeros,
sizeof(
info->pServiceChecksum)),
"pServiceChecksum = %s\n",
706 ok( !
info->dwLanguageNameOffset,
"dwLanguageNameOffset = %ld\n",
info->dwLanguageNameOffset );
707 ok( !
info->dwTypeIDMainSize,
"dwTypeIDMainSize = %ld\n",
info->dwTypeIDMainSize );
708 ok( !
info->dwTypeIDMainOffset,
"dwTypeIDMainOffset = %ld\n",
info->dwTypeIDMainOffset );
709 ok( !
info->dwTypeNameMainOffset,
"dwTypeNameMainOffset = %ld\n",
info->dwTypeNameMainOffset );
710 ok( !
info->dwTypeIDMUISize,
"dwTypeIDMUISize = %ld\n",
info->dwTypeIDMUISize );
711 ok( !
info->dwTypeIDMUIOffset,
"dwTypeIDMUIOffset = %ld\n",
info->dwTypeIDMUIOffset );
712 ok( !
info->dwTypeNameMUIOffset,
"dwTypeNameMUIOffset = %ld\n",
info->dwTypeNameMUIOffset );
713 ok( !
memcmp(
info->abBuffer, zeros,
sizeof(
info->abBuffer)),
"abBuffer = %s\n",
724 r =
GetFileMUIInfo( MUI_QUERY_TYPE | MUI_QUERY_CHECKSUM | MUI_QUERY_LANGUAGE_NAME
725 | MUI_QUERY_RESOURCE_TYPES, ln_dll,
NULL, &
size );
726 ok( !
r,
"GetFileMUIInfo succeeded\n" );
727#if defined(__REACTOS__) && defined(_WIN64)
741 r =
GetFileMUIInfo( MUI_QUERY_TYPE | MUI_QUERY_CHECKSUM | MUI_QUERY_LANGUAGE_NAME
742 | MUI_QUERY_RESOURCE_TYPES, ln_dll,
NULL, &
size );
743 ok( !
r,
"GetFileMUIInfo succeeded\n" );
745 ok(
size,
"size was not set\n" );
750 info->dwVersion = MUI_FILEINFO_VERSION;
751 r =
GetFileMUIInfo( MUI_QUERY_TYPE | MUI_QUERY_CHECKSUM | MUI_QUERY_LANGUAGE_NAME
752 | MUI_QUERY_RESOURCE_TYPES, ln_dll,
info, &
size );
754 ok(
info->dwSize ==
sizeof(
buf),
"dwSize = %ld\n",
info->dwSize );
755 ok(
info->dwVersion == MUI_FILEINFO_VERSION,
"dwVersion = %ld\n",
info->dwVersion );
756 ok(
info->dwFileType == MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN,
"dwFileType = %ld\n",
info->dwFileType );
757 ok(
info->pChecksum[0] ==
'c',
"pChecksum = %s\n",
759 ok(
info->pServiceChecksum[0] ==
's',
"pServiceChecksum = %s\n",
761 ok(
info->dwLanguageNameOffset == 72,
"dwLanguageNameOffset = %ld\n",
info->dwLanguageNameOffset );
762#if defined(__REACTOS__) && DLL_EXPORT_VERSION >= 0x600
764 ok(
FALSE,
"FIXME: These tests crash on ReactOS!\n");
769 ok(
info->dwTypeIDMainSize == 1,
"dwTypeIDMainSize = %ld\n",
info->dwTypeIDMainSize );
770 ok(
info->dwTypeIDMainOffset == 84,
"dwTypeIDMainOffset = %ld\n",
info->dwTypeIDMainOffset );
772 ok(
id[0] ==
RT_CURSOR,
"type ID main[0] = %ld\n",
id[0] );
773 ok(
info->dwTypeNameMainOffset == 88,
"dwTypeNameMainOffset = %ld\n",
info->dwTypeNameMainOffset );
778 ok(
info->dwTypeIDMUISize == 1,
"dwTypeIDMUISize = %ld\n",
info->dwTypeIDMUISize );
779 ok(
info->dwTypeIDMUIOffset == 98,
"dwTypeIDMUIOffset = %ld\n",
info->dwTypeIDMUIOffset );
781 ok(
id[0] ==
RT_STRING,
"type ID MUI[0] = %ld\n",
id[0] );
782 ok(
info->dwTypeNameMUIOffset == 102,
"dwTypeNameMUIOffset = %ld\n",
info->dwTypeNameMUIOffset );
787#if defined(__REACTOS__) && DLL_EXPORT_VERSION >= 0x600
801 info->dwVersion = MUI_FILEINFO_VERSION;
802 r =
GetFileMUIInfo( MUI_QUERY_TYPE | MUI_QUERY_CHECKSUM | MUI_QUERY_LANGUAGE_NAME
803 | MUI_QUERY_RESOURCE_TYPES, en_dll,
info, &
size );
805 ok(
info->dwSize ==
sizeof(
buf),
"dwSize = %ld\n",
info->dwSize );
806 ok(
info->dwVersion == MUI_FILEINFO_VERSION,
"dwVersion = %ld\n",
info->dwVersion );
807 ok(
info->dwFileType == MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI,
"dwFileType = %ld\n",
info->dwFileType );
808 ok(
info->pChecksum[0] ==
'c',
"pChecksum = %s\n",
810 ok(
info->pServiceChecksum[0] ==
's',
"pServiceChecksum = %s\n",
812 ok(
info->dwLanguageNameOffset == 72,
"dwLanguageNameOffset = %ld\n",
info->dwLanguageNameOffset );
813#if defined(__REACTOS__) && DLL_EXPORT_VERSION >= 0x600
815 ok(
FALSE,
"FIXME: These tests crash on ReactOS!\n");
820 ok( !
info->dwTypeIDMainSize,
"dwTypeIDMainSize = %ld\n",
info->dwTypeIDMainSize );
821 ok( !
info->dwTypeIDMainOffset,
"dwTypeIDMainOffset = %ld\n",
info->dwTypeIDMainOffset );
822 ok( !
info->dwTypeNameMainOffset,
"dwTypeNameMainOffset = %ld\n",
info->dwTypeNameMainOffset );
823 ok(
info->dwTypeIDMUISize == 1,
"dwTypeIDMUISize = %ld\n",
info->dwTypeIDMUISize );
824 ok(
info->dwTypeIDMUIOffset == 84,
"dwTypeIDMUIOffset = %ld\n",
info->dwTypeIDMUIOffset );
826 ok(
id[0] ==
RT_STRING,
"type ID MUI[0] = %ld\n",
id[0] );
827 ok(
info->dwTypeNameMUIOffset == 88,
"dwTypeNameMUIOffset = %ld\n",
info->dwTypeNameMUIOffset );
832#if defined(__REACTOS__) && DLL_EXPORT_VERSION >= 0x600
851 win_skip(
"Resource calls are not implemented\n");
#define ERROR_INSUFFICIENT_BUFFER
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
const char * wine_dbgstr_an(const char *str, int n)
#define IMAGE_FILE_MACHINE_ARMNT
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define IMAGE_FILE_MACHINE_ARM64
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI RemoveDirectoryW(IN LPCWSTR lpPathName)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
BOOL WINAPI UpdateResourceW(HANDLE hUpdate, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cbData)
BOOL WINAPI UpdateResourceA(HANDLE hUpdate, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cbData)
HANDLE WINAPI BeginUpdateResourceA(LPCSTR pFileName, BOOL bDeleteExistingResources)
BOOL WINAPI EndUpdateResourceW(HANDLE hUpdate, BOOL fDiscard)
HRSRC WINAPI FindResourceExW(HMODULE hModule, LPCWSTR type, LPCWSTR name, WORD lang)
HANDLE WINAPI BeginUpdateResourceW(LPCWSTR pFileName, BOOL bDeleteExistingResources)
BOOL WINAPI EndUpdateResourceA(HANDLE hUpdate, BOOL fDiscard)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
HANDLE NTAPI CreateFileMappingA(IN HANDLE hFile, IN LPSECURITY_ATTRIBUTES lpFileMappingAttributes, IN DWORD flProtect, IN DWORD dwMaximumSizeHigh, IN DWORD dwMaximumSizeLow, IN LPCSTR lpName)
struct _IMAGE_DOS_HEADER IMAGE_DOS_HEADER
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLenum GLenum GLenum GLenum mapping
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
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
static ERESOURCE GlobalLock
BOOL WINAPI GetFileMUIInfo(DWORD dwFlags, PCWSTR pcwszFilePath, PFILEMUIINFO pFileMUIInfo, DWORD *pcbFileMUIInfo)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static void update_resources_version(void)
IMAGE_SECTION_HEADER section
static void update_missing_exe(void)
static void create_test_dll(const WCHAR *name)
static const IMAGE_SECTION_HEADER sh_rsrc_4
static const IMAGE_SECTION_HEADER sh_junk
static int build_exe(const sec_build *sec_descr)
static void update_empty_exe(void)
static const IMAGE_SECTION_HEADER sh_rsrc_2
static void update_resources_none(void)
static struct mui_res ln_mui_res
struct _sec_build sec_build
static const IMAGE_SECTION_HEADER sh_rsrc_1
static void update_resources_delete(void)
static const WCHAR filenameW[]
static const IMAGE_SECTION_HEADER sh_rsrc_6
static const IMAGE_SECTION_HEADER sh_rodata_1
static void update_resources_bigdata(void)
static const IMAGE_SECTION_HEADER sh_rsrc_5
static const struct _sec_variants sec_variants[]
static const IMAGE_SECTION_HEADER sh_junk_2
static const struct @1822 dll_image
static void test_mui(void)
static void test_internal_structure(void)
static const IMAGE_SECTION_HEADER sh_rsrc_3
static struct mui_res en_mui_res
static const IMAGE_SECTION_HEADER sh_rodata_2
static void test_find_resource(void)
struct _sec_verify sec_verify
static void update_resources_name(void)
static void check_exe(const sec_verify *verify)
#define IMAGE_SUBSYSTEM_WINDOWS_CUI
#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT
#define IMAGE_SCN_CNT_INITIALIZED_DATA
#define IMAGE_FILE_MACHINE_AMD64
#define IMAGE_SCN_MEM_READ
#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
#define IMAGE_NT_OPTIONAL_HDR_MAGIC
#define IMAGE_FILE_EXECUTABLE_IMAGE
#define IMAGE_FILE_MACHINE_I386
struct _IMAGE_OPTIONAL_HEADER IMAGE_OPTIONAL_HEADER
#define IMAGE_NT_SIGNATURE
#define IMAGE_DOS_SIGNATURE
static unsigned int file_size
#define offsetof(TYPE, MEMBER)
const IMAGE_SECTION_HEADER * sect_in[max_sections]
const IMAGE_SECTION_HEADER * sect_out[max_sections]
DWORD NumberOfNamedEntries
BYTE service_checksum[16]
static const WCHAR lang[]
DWORD WINAPI GetLastError(void)
#define LOAD_LIBRARY_AS_DATAFILE
#define ERROR_BAD_EXE_FORMAT
#define ERROR_RESOURCE_TYPE_NOT_FOUND
#define ERROR_RESOURCE_LANG_NOT_FOUND
#define ERROR_FILE_INVALID
#define ERROR_RESOURCE_NAME_NOT_FOUND
#define IMAGE_FILE_RESOURCE_DIRECTORY
#define MAKEINTRESOURCEA(i)
#define MAKEINTRESOURCEW(i)