Use GetProcAddress for mmio* functions to avoid importing winmm.dll.
[wine.git] / documentation / dlls
blob7c81d3b7da45500606e20fe16d3d591c1653c8a7
1 WINE/WINDOWS DLLS
4 This document mainly deals with the status of current DLL support by
5 Wine.  The Wine ini file currently supports settings to change the
6 load order of DLLs.  The load order depends on several issues, which
7 results in different settings for various DLLs.
10 Pros of Native DLLs
11 -------------------
13 Native DLLs of course guarantee 100% compatibility for routines they
14 implement. For example, using the native USER DLL would maintain a
15 virtually perfect and Windows 95-like look for window borders, dialog
16 controls, and so on. Using the built-in WINE version of this library,
17 on the other hand, would produce a display that does not precisely
18 mimic that of Windows 95.  Such subtle differences can be engendered
19 in other important DLLs, such as the common controls library COMMCTRL
20 or the common dialogs library COMMDLG, when built-in WINE DLLs outrank
21 other types in load order.
23 More significant, less aesthetically-oriented problems can result if
24 the built-in WINE version of the SHELL DLL is loaded before the native
25 version of this library. SHELL contains routines such as those used by
26 installer utilities to create desktop shortcuts. Some installers might
27 fail when using WINE's built-in SHELL.
29 Cons of Native DLLs
30 -------------------
32 Not every application performs better under native DLLs. If a library
33 tries to access features of the rest of the system that are not fully
34 implemented in Wine, the native DLL might work much worse than the
35 corresponding built-in one, if at all. For example, the native Windows
36 GDI library must be paired with a Windows display driver, which of
37 course is not present under Intel Unix and WINE.
39 Finally, occassionally built-in WINE DLLs implement more features than
40 the corresponding native Windows DLLs. Probably the most important
41 example of such behavior is the integration of Wine with X provided by
42 WINE's built-in USER DLL. Should the native Windows USER library take
43 load-order precedence, such features as the ability to use the
44 clipboard or drag-and- drop between Wine windows and X windows will be
45 lost.
47 Deciding Between Native and Built-In DLLs
48 -----------------------------------------
50 Clearly, there is no one rule-of-thumb regarding which load-order to
51 use. So, you must become familiar with:
52 * what specific DLLs do
53 * which other DLLs or features a given library interacts with
54 and use this information to make a case-by-case decision.
56 Load Order for DLLs
57 -------------------
59 Using the DLL sections from the wine configuration file, the load
60 order can be tweaked to a high degree. In general it is advised not to
61 change the settings of the configuration file. The default
62 configuration specifies the right load order for the most important
63 DLLs.
65 The default load order follows this algorithm: for all DLLs which have
66 a fully-functional Wine implementation, or where the native DLL is
67 known not to work, the built-in library will be loaded first. In all
68 other cases, the native DLL takes load-order precedence.
70 The DefaultLoadOrder from the [DllDefaults] section specifies for all
71 DLLs which version to try first. See manpage for explanation of the
72 arguments.
74 The [DllOverrides] section deals with DLLs, which need a
75 different-from-default treatment. 
77 The [DllPairs] section is for DLLs, which must be loaded in pairs. In
78 general, these are DLLs for either 16-bit or 32-bit applications. In
79 most cases in Windows, the 32-bit version cannot be used without its
80 16-bit counterpart. For WINE, it is customary that the 16-bit
81 implementations rely on the 32-bit implementations and cast the
82 results back to 16-bit arguments. Changing anything in this section is
83 bound to result in errors.
85 For the future, Wine implemetation of Windows DLL seems to head
86 towards unifying the 16 and 32 bit DLLs wherever possible, resulting
87 in larger DLLs.  They are stored in the dlls/ subdirectory using the
88 16-bit name.  For large DLLs, a split might be discussed.
91 Understanding What DLLs Do
92 --------------------------
94 The following list briefly describes each of the DLLs commonly found
95 in Windows whose load order may be modified during the configuration
96 and compilation of WINE.
98 (See also ./DEVELOPER-HINTS or the dlls/ subdirectory to see which
99 DLLs are currently being rewritten for wine)
101 ADVAPI32.DLL:      32-bit application advanced programming interfaces
102                    like crypto, systeminfo, security and eventlogging
103 AVIFILE.DLL:       32-bit application programming interfaces for the
104                    Audio Video Interleave (AVI) Windows-specific
105                    Microsoft audio-video standard
106 COMMCTRL.DLL:      16-bit common controls
107 COMCTL32.DLL:      32-bit common controls 
108 COMDLG32.DLL:      32-bit common dialogs
109 COMMDLG.DLL:       16-bit common dialogs
110 COMPOBJ.DLL:       OLE 16- and 32-bit compatibility libraries
111 CRTDLL.DLL:        Microsoft C runtime
112 DCIMAN.DLL:        16-bit
113 DCIMAN32.DLL:      32-bit display controls
114 DDEML.DLL:         DDE messaging
115 D3D*.DLL           DirectX/Direct3D drawing libraries
116 DDRAW.DLL:         DirectX drawing libraries
117 DINPUT.DLL:        DirectX input libraries
118 DISPLAY.DLL:       Display libraries
119 DPLAY.DLL, DPLAYX.DLL:  DirectX playback libraries
120 DSOUND.DLL:        DirectX audio libraries
121 GDI.DLL:           16-bit graphics driver interface
122 GDI32.DLL:         32-bit graphics driver interface
123 IMAGEHLP.DLL:      32-bit IMM API helper libraries (for PE-executables)
124 IMM32.DLL:         32-bit IMM API
125 IMGUTIL.DLL:       
126 KERNEL32.DLL       32-bit kernel DLL
127 KEYBOARD.DLL:      Keyboard drivers
128 LZ32.DLL:          32-bit Lempel-Ziv or LZ file compression 
129                    used by the installshields (???).
130 LZEXPAND.DLL:      LZ file expansion; needed for Windows Setup
131 MMSYSTEM.DLL:      Core of the Windows multimedia system
132 MOUSE.DLL:         Mouse drivers
133 MPR.DLL:           32-bit Windows network interface
134 MSACM.DLL:         Core of the Addressed Call Mode or ACM system
135 MSACM32.DLL:       Core of the 32-bit ACM system
136                    Audio Compression Manager ???
137 MSNET32.DLL        32-bit network APIs
138 MSVFW32.DLL:       32-bit Windows video system
139 MSVIDEO.DLL:       16-bit Windows video system
140 OLE2.DLL:          OLE 2.0 libraries
141 OLE32.DLL:         32-bit OLE 2.0 components
142 OLE2CONV.DLL:      Import filter for graphics files
143 OLE2DISP.DLL, OLE2NLS.DLL: OLE 2.1 16- and 32-bit interoperability
144 OLE2PROX.DLL:      Proxy server for OLE 2.0
145 OLE2THK.DLL:       Thunking for OLE 2.0
146 OLEAUT32.DLL       32-bit OLE 2.0 automation
147 OLECLI.DLL:        16-bit OLE client
148 OLECLI32.DLL:      32-bit OLE client
149 OLEDLG.DLL:        OLE 2.0 user interface support
150 OLESVR.DLL:        16-bit OLE server libraries
151 OLESVR32.DLL:      32-bit OLE server libraries
152 PSAPI.DLL:         Proces Status API libraries
153 RASAPI16.DLL:      16-bit Remote Access Services libraries
154 RASAPI32.DLL:      32-bit Remote Access Services libraries
155 SHELL.DLL:         16-bit Windows shell used by Setup
156 SHELL32.DLL:       32-bit Windows shell (COM object?)
157 TAPI/TAPI32/TAPIADDR:  Telephone API (for Modems)
158 W32SKRNL:          Win32s Kernel ? (not in use for Win95 and up!)
159 WIN32S16.DLL:      Application compatibility for Win32s
160 WIN87EM.DLL:       80387 math-emulation libraries
161 WINASPI.DLL:       Advanced SCSI Peripheral Interface or ASPI libraries
162 WINDEBUG.DLL       Windows debugger
163 WINMM.DLL:         Libraries for multimedia thunking
164 WING.DLL:          Libraries required to "draw" graphics
165 WINSOCK.DLL:       Sockets APIs
166 WINSPOOL.DLL:      Print spooler libraries
167 WNASPI32.DLL:      32-bit ASPI libraries
168 WSOCK32.DLL:       32-bit sockets APIs
171 Credits
172 -------
174 Based upon various messages on wine-devel especially by Ulrich Weigand.
175 Adapted by Michele Petrovski and Klaas van Gend.