ntdll: Detect 16-bit modules and resolve imports for them.

This commit is contained in:
Alexandre Julliard 2014-02-25 16:08:24 -06:00
parent f4d7a9ab53
commit 0e42fd97c0
1 changed files with 18 additions and 1 deletions

View File

@ -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 */