| 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. |