Alexandre Julliard : ntdll: Detect 16-bit modules and resolve imports for them.
Alexandre Julliard
julliard at winehq.org
Tue Feb 25 16:58:16 CST 2014
Module: wine
Branch: master
Commit: 0e42fd97c05beb50c0788164647631c00485623b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0e42fd97c05beb50c0788164647631c00485623b
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Feb 25 16:08:24 2014 -0600
ntdll: Detect 16-bit modules and resolve imports for them.
---
dlls/ntdll/loader.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index a8d675a..d458a31 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -1464,6 +1464,22 @@ static WCHAR *get_builtin_fullname( const WCHAR *path, const char *filename )
}
+/*************************************************************************
+ * is_16bit_builtin
+ */
+static BOOL is_16bit_builtin( HMODULE module )
+{
+ const IMAGE_EXPORT_DIRECTORY *exports;
+ DWORD exp_size;
+
+ if (!(exports = RtlImageDirectoryEntryToData( module, TRUE,
+ IMAGE_DIRECTORY_ENTRY_EXPORT, &exp_size )))
+ return FALSE;
+
+ return find_named_export( module, exports, exp_size, "__wine_spec_dos_header", -1, NULL ) != NULL;
+}
+
+
/***********************************************************************
* load_builtin_callback
*
@@ -1511,7 +1527,8 @@ static void load_builtin_callback( void *module, const char *filename )
wm->ldr.Flags |= LDR_WINE_INTERNAL;
if ((nt->FileHeader.Characteristics & IMAGE_FILE_DLL) ||
- nt->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_NATIVE)
+ nt->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_NATIVE ||
+ is_16bit_builtin( module ))
{
/* fixup imports */
More information about the wine-cvs
mailing list