From a34aef10de87fa975ecf36aa3525fb7fc35221a6 Mon Sep 17 00:00:00 2001 From: Klaas van Gend Date: Wed, 28 Jul 1999 16:37:19 +0000 Subject: [PATCH] Added explanation of the current DLL support. --- documentation/dlls | 175 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 documentation/dlls diff --git a/documentation/dlls b/documentation/dlls new file mode 100644 index 00000000000..7c81d3b7da4 --- /dev/null +++ b/documentation/dlls @@ -0,0 +1,175 @@ +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.