[v2 2/2] kernel32: resource: Changed QUEUEDUPDATES to match MS offset

Jon Doron arilou at gmail.com
Sun Jul 8 23:58:33 CDT 2018


The utility muirct.exe for some reason accesses the opaque
HANDLE that is returned by BeginUpdateResource, it assumes
a certain structure in which (on 32bit systems) there is a
pointer to the wide repesentation of the file name in offset
0x18.

Refer to: muirct!BldToolsEndUpdateResourceW called from
muirct!CopyChecksumToFile

Sample execution:
MUIRCT.EXE -c "ui.exe" -e "de-DE\ui.exe.mui"

Signed-off-by: Jon Doron <arilou at gmail.com>
---
 dlls/kernel32/resource.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/dlls/kernel32/resource.c b/dlls/kernel32/resource.c
index 73f3cca363..c5f2d79db0 100644
--- a/dlls/kernel32/resource.c
+++ b/dlls/kernel32/resource.c
@@ -635,7 +635,12 @@ DWORD WINAPI SizeofResource( HINSTANCE hModule, HRSRC hRsrc )
 
 typedef struct
 {
-    LPWSTR pFileName;
+#ifdef _WIN64
+    UCHAR Reserved[0x30];
+#else
+    UCHAR Reserved[0x18];
+#endif
+    LPWSTR pFileName;       // Must be in offset 0x18 on 32bit and 0x30 on 64bit
     BOOL bDeleteExistingResources;
     struct list root;
 } QUEUEDUPDATES;
-- 
2.17.1




More information about the wine-devel mailing list