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