176 lines
7.3 KiB
Plaintext
176 lines
7.3 KiB
Plaintext
WINE/WINDOWS DLLS
|
|
|
|
|
|
This document mainly deals with the status of current DLL support by
|
|
Wine. The Wine ini file currently supports settings to change the
|
|
load order of DLLs. The load order depends on several issues, which
|
|
results in different settings for various DLLs.
|
|
|
|
|
|
Pros of Native DLLs
|
|
-------------------
|
|
|
|
Native DLLs of course guarantee 100% compatibility for routines they
|
|
implement. For example, using the native USER DLL would maintain a
|
|
virtually perfect and Windows 95-like look for window borders, dialog
|
|
controls, and so on. Using the built-in WINE version of this library,
|
|
on the other hand, would produce a display that does not precisely
|
|
mimic that of Windows 95. Such subtle differences can be engendered
|
|
in other important DLLs, such as the common controls library COMMCTRL
|
|
or the common dialogs library COMMDLG, when built-in WINE DLLs outrank
|
|
other types in load order.
|
|
|
|
More significant, less aesthetically-oriented problems can result if
|
|
the built-in WINE version of the SHELL DLL is loaded before the native
|
|
version of this library. SHELL contains routines such as those used by
|
|
installer utilities to create desktop shortcuts. Some installers might
|
|
fail when using WINE's built-in SHELL.
|
|
|
|
Cons of Native DLLs
|
|
-------------------
|
|
|
|
Not every application performs better under native DLLs. If a library
|
|
tries to access features of the rest of the system that are not fully
|
|
implemented in Wine, the native DLL might work much worse than the
|
|
corresponding built-in one, if at all. For example, the native Windows
|
|
GDI library must be paired with a Windows display driver, which of
|
|
course is not present under Intel Unix and WINE.
|
|
|
|
Finally, occassionally built-in WINE DLLs implement more features than
|
|
the corresponding native Windows DLLs. Probably the most important
|
|
example of such behavior is the integration of Wine with X provided by
|
|
WINE's built-in USER DLL. Should the native Windows USER library take
|
|
load-order precedence, such features as the ability to use the
|
|
clipboard or drag-and- drop between Wine windows and X windows will be
|
|
lost.
|
|
|
|
Deciding Between Native and Built-In DLLs
|
|
-----------------------------------------
|
|
|
|
Clearly, there is no one rule-of-thumb regarding which load-order to
|
|
use. So, you must become familiar with:
|
|
* what specific DLLs do
|
|
* which other DLLs or features a given library interacts with
|
|
and use this information to make a case-by-case decision.
|
|
|
|
Load Order for DLLs
|
|
-------------------
|
|
|
|
Using the DLL sections from the wine configuration file, the load
|
|
order can be tweaked to a high degree. In general it is advised not to
|
|
change the settings of the configuration file. The default
|
|
configuration specifies the right load order for the most important
|
|
DLLs.
|
|
|
|
The default load order follows this algorithm: for all DLLs which have
|
|
a fully-functional Wine implementation, or where the native DLL is
|
|
known not to work, the built-in library will be loaded first. In all
|
|
other cases, the native DLL takes load-order precedence.
|
|
|
|
The DefaultLoadOrder from the [DllDefaults] section specifies for all
|
|
DLLs which version to try first. See manpage for explanation of the
|
|
arguments.
|
|
|
|
The [DllOverrides] section deals with DLLs, which need a
|
|
different-from-default treatment.
|
|
|
|
The [DllPairs] section is for DLLs, which must be loaded in pairs. In
|
|
general, these are DLLs for either 16-bit or 32-bit applications. In
|
|
most cases in Windows, the 32-bit version cannot be used without its
|
|
16-bit counterpart. For WINE, it is customary that the 16-bit
|
|
implementations rely on the 32-bit implementations and cast the
|
|
results back to 16-bit arguments. Changing anything in this section is
|
|
bound to result in errors.
|
|
|
|
For the future, Wine implemetation of Windows DLL seems to head
|
|
towards unifying the 16 and 32 bit DLLs wherever possible, resulting
|
|
in larger DLLs. They are stored in the dlls/ subdirectory using the
|
|
16-bit name. For large DLLs, a split might be discussed.
|
|
|
|
|
|
Understanding What DLLs Do
|
|
--------------------------
|
|
|
|
The following list briefly describes each of the DLLs commonly found
|
|
in Windows whose load order may be modified during the configuration
|
|
and compilation of WINE.
|
|
|
|
(See also ./DEVELOPER-HINTS or the dlls/ subdirectory to see which
|
|
DLLs are currently being rewritten for wine)
|
|
|
|
ADVAPI32.DLL: 32-bit application advanced programming interfaces
|
|
like crypto, systeminfo, security and eventlogging
|
|
AVIFILE.DLL: 32-bit application programming interfaces for the
|
|
Audio Video Interleave (AVI) Windows-specific
|
|
Microsoft audio-video standard
|
|
COMMCTRL.DLL: 16-bit common controls
|
|
COMCTL32.DLL: 32-bit common controls
|
|
COMDLG32.DLL: 32-bit common dialogs
|
|
COMMDLG.DLL: 16-bit common dialogs
|
|
COMPOBJ.DLL: OLE 16- and 32-bit compatibility libraries
|
|
CRTDLL.DLL: Microsoft C runtime
|
|
DCIMAN.DLL: 16-bit
|
|
DCIMAN32.DLL: 32-bit display controls
|
|
DDEML.DLL: DDE messaging
|
|
D3D*.DLL DirectX/Direct3D drawing libraries
|
|
DDRAW.DLL: DirectX drawing libraries
|
|
DINPUT.DLL: DirectX input libraries
|
|
DISPLAY.DLL: Display libraries
|
|
DPLAY.DLL, DPLAYX.DLL: DirectX playback libraries
|
|
DSOUND.DLL: DirectX audio libraries
|
|
GDI.DLL: 16-bit graphics driver interface
|
|
GDI32.DLL: 32-bit graphics driver interface
|
|
IMAGEHLP.DLL: 32-bit IMM API helper libraries (for PE-executables)
|
|
IMM32.DLL: 32-bit IMM API
|
|
IMGUTIL.DLL:
|
|
KERNEL32.DLL 32-bit kernel DLL
|
|
KEYBOARD.DLL: Keyboard drivers
|
|
LZ32.DLL: 32-bit Lempel-Ziv or LZ file compression
|
|
used by the installshields (???).
|
|
LZEXPAND.DLL: LZ file expansion; needed for Windows Setup
|
|
MMSYSTEM.DLL: Core of the Windows multimedia system
|
|
MOUSE.DLL: Mouse drivers
|
|
MPR.DLL: 32-bit Windows network interface
|
|
MSACM.DLL: Core of the Addressed Call Mode or ACM system
|
|
MSACM32.DLL: Core of the 32-bit ACM system
|
|
Audio Compression Manager ???
|
|
MSNET32.DLL 32-bit network APIs
|
|
MSVFW32.DLL: 32-bit Windows video system
|
|
MSVIDEO.DLL: 16-bit Windows video system
|
|
OLE2.DLL: OLE 2.0 libraries
|
|
OLE32.DLL: 32-bit OLE 2.0 components
|
|
OLE2CONV.DLL: Import filter for graphics files
|
|
OLE2DISP.DLL, OLE2NLS.DLL: OLE 2.1 16- and 32-bit interoperability
|
|
OLE2PROX.DLL: Proxy server for OLE 2.0
|
|
OLE2THK.DLL: Thunking for OLE 2.0
|
|
OLEAUT32.DLL 32-bit OLE 2.0 automation
|
|
OLECLI.DLL: 16-bit OLE client
|
|
OLECLI32.DLL: 32-bit OLE client
|
|
OLEDLG.DLL: OLE 2.0 user interface support
|
|
OLESVR.DLL: 16-bit OLE server libraries
|
|
OLESVR32.DLL: 32-bit OLE server libraries
|
|
PSAPI.DLL: Proces Status API libraries
|
|
RASAPI16.DLL: 16-bit Remote Access Services libraries
|
|
RASAPI32.DLL: 32-bit Remote Access Services libraries
|
|
SHELL.DLL: 16-bit Windows shell used by Setup
|
|
SHELL32.DLL: 32-bit Windows shell (COM object?)
|
|
TAPI/TAPI32/TAPIADDR: Telephone API (for Modems)
|
|
W32SKRNL: Win32s Kernel ? (not in use for Win95 and up!)
|
|
WIN32S16.DLL: Application compatibility for Win32s
|
|
WIN87EM.DLL: 80387 math-emulation libraries
|
|
WINASPI.DLL: Advanced SCSI Peripheral Interface or ASPI libraries
|
|
WINDEBUG.DLL Windows debugger
|
|
WINMM.DLL: Libraries for multimedia thunking
|
|
WING.DLL: Libraries required to "draw" graphics
|
|
WINSOCK.DLL: Sockets APIs
|
|
WINSPOOL.DLL: Print spooler libraries
|
|
WNASPI32.DLL: 32-bit ASPI libraries
|
|
WSOCK32.DLL: 32-bit sockets APIs
|
|
|
|
|
|
Credits
|
|
-------
|
|
|
|
Based upon various messages on wine-devel especially by Ulrich Weigand.
|
|
Adapted by Michele Petrovski and Klaas van Gend.
|