Updates for the new loadorder handling of 16-bit dlls.

This commit is contained in:
Alexandre Julliard 2004-01-05 21:19:22 +00:00
parent 6e2d05957e
commit 7412125e46
4 changed files with 23 additions and 29 deletions

View File

@ -57,26 +57,19 @@ struct loadorder_list
/* dll to load as builtins if not explicitly specified otherwise */ /* dll to load as builtins if not explicitly specified otherwise */
/* the list must remain sorted by dll name */ /* the list must remain sorted by dll name */
static const WCHAR default_builtins[][16] = static const WCHAR default_builtins[][10] =
{ {
{ 'g','d','i','3','2',0 }, { 'g','d','i','3','2',0 },
{ 'i','c','m','p',0 }, { 'i','c','m','p',0 },
{ 'k','e','r','n','e','l','3','2',0 }, { 'k','e','r','n','e','l','3','2',0 },
{ 'm','m','s','y','s','t','e','m',0 },
{ 'n','t','d','l','l',0 }, { 'n','t','d','l','l',0 },
{ 'o','d','b','c','3','2',0 }, { 'o','d','b','c','3','2',0 },
{ 's','o','u','n','d',0 },
{ 't','t','y','d','r','v',0 }, { 't','t','y','d','r','v',0 },
{ 'u','s','e','r','3','2',0 }, { 'u','s','e','r','3','2',0 },
{ 'w','3','2','s','k','r','n','l',0 }, { 'w','3','2','s','k','r','n','l',0 },
{ 'w','3','2','s','y','s',0 },
{ 'w','i','n','3','2','s','1','6',0 },
{ 'w','i','n','a','s','p','i',0 },
{ 'w','i','n','e','d','o','s',0 }, { 'w','i','n','e','d','o','s',0 },
{ 'w','i','n','e','p','s','1','6','.','d','r','v',0 },
{ 'w','i','n','e','p','s',0 }, { 'w','i','n','e','p','s',0 },
{ 'w','i','n','m','m',0 }, { 'w','i','n','m','m',0 },
{ 'w','i','n','s','o','c','k',0 },
{ 'w','n','a','s','p','i','3','2',0 }, { 'w','n','a','s','p','i','3','2',0 },
{ 'w','o','w','3','2',0 }, { 'w','o','w','3','2',0 },
{ 'w','s','2','_','3','2',0 }, { 'w','s','2','_','3','2',0 },
@ -324,7 +317,7 @@ static void init_load_order(void)
" Only the first letter of the override (native or builtin)\n" " Only the first letter of the override (native or builtin)\n"
" is significant.\n\n" " is significant.\n\n"
"Example:\n" "Example:\n"
" WINEDLLOVERRIDES=\"comdlg32,commdlg=n,b;shell,shell32=b\"\n" ); " WINEDLLOVERRIDES=\"comdlg32=n,b;shell32,shlwapi=b\"\n" );
exit(0); exit(0);
} }

View File

@ -87,9 +87,7 @@ WINE REGISTRY Version 2
; some dlls you may want to change ; some dlls you may want to change
"oleaut32" = "builtin, native" "oleaut32" = "builtin, native"
"ole32" = "builtin, native" "ole32" = "builtin, native"
"commdlg" = "builtin, native"
"comdlg32" = "builtin, native" "comdlg32" = "builtin, native"
"shell" = "builtin, native"
"shell32" = "builtin, native" "shell32" = "builtin, native"
"shfolder" = "builtin, native" "shfolder" = "builtin, native"
"shlwapi" = "builtin, native" "shlwapi" = "builtin, native"

View File

@ -199,10 +199,12 @@ can be any valid DLL module name. If no extension is specified .dll is
assumed. The specified value is a comma separated list of module-types assumed. The specified value is a comma separated list of module-types
to try to load in that specific order. Case is not important and only to try to load in that specific order. Case is not important and only
the first letter of each type is enough to identify the type n[ative] the first letter of each type is enough to identify the type n[ative]
or b[uiltin]. Also whitespace is ignored. See also commandline or b[uiltin]. Also whitespace is ignored. See also the description of
option the
.I --dll .I WINEDLLOVERRIDES
for details about the allowable types. environment variable in
.BR wine (1)
for details about the allowed types.
.br .br
The wildcard entry The wildcard entry
.I """*""" .I """*"""
@ -214,8 +216,6 @@ Examples:
.br .br
.I """kernel32""=""builtin""" .I """kernel32""=""builtin"""
.br .br
.I """kernel""=""builtin"""
.br
.I """comdlg32""=""native,builtin""" .I """comdlg32""=""native,builtin"""
.br .br
.I """*""=""builtin,native""" .I """*""=""builtin,native"""

View File

@ -217,28 +217,31 @@ on. Multiple libraries with the same load order can be separated with
commas. It is also possible to use specify different loadorders for commas. It is also possible to use specify different loadorders for
different libraries by separating the entries by ";". different libraries by separating the entries by ";".
.br .br
The load order for a 16-bit dll is always defined by the load order of
the 32-bit dll that contains it (which can be identified by looking at
the symbolic link of the 16-bit .dll.so file). For instance if
ole32.dll is configured as builtin, storage.dll will be loaded as
builtin too, since the 32-bit ole32.dll contains the 16-bit
storage.dll.
.br
Examples: Examples:
.RS .RS
.TP .TP
WINEDLLOVERRIDES="comdlg32,commdlg=n,b" WINEDLLOVERRIDES="comdlg32,shell32=n,b"
.br .br
Try to load comdlg32 and commdlg as native windows dll first and try Try to load comdlg32 and shell32 as native windows dll first and try
the builtin version if the native load fails. the builtin version if the native load fails.
.TP .TP
WINEDLLOVERRIDES="shell,shell32=n;c:\(rs\(rsfoo\(rs\(rsbar\(rs\(rsbaz=b" WINEDLLOVERRIDES="comdlg32,shell32=n;c:\(rs\(rsfoo\(rs\(rsbar\(rs\(rsbaz=b"
.br .br
Try to load the libraries shell and shell32 as native windows dlls. Furthermore, if Try to load the libraries comdlg32 and shell32 as native windows dlls. Furthermore, if
an application request to load c:\(rsfoo\(rsbar\(rsbaz.dll load the builtin library baz. an application request to load c:\(rsfoo\(rsbar\(rsbaz.dll load the builtin library baz.
.TP .TP
WINEDLLOVERRIDES="comdlg32,commdlg=b,n;shell,shell32=b;comctl32,commctrl=n" WINEDLLOVERRIDES="comdlg32=b,n;shell32=b;comctl32=n"
.br .br
Try to load comdlg32 and commdlg as builtin first and try the native version Try to load comdlg32 as builtin first and try the native version if
if the builtin load fails; load shell32/shell always as builtin and the builtin load fails; load shell32 always as builtin and comctl32
comctl32/commctrl always as native. always as native.
.br
Note: It is wise to keep dll pairs (comdlg32/commdlg, shell/shell32, etc.)
having exactly the same load order. This will prevent mismatches at runtime.
See also configuration file format below.
.RE .RE
.TP .TP
.I DISPLAY .I DISPLAY