Source Tree Structure

From WineHQ Wiki
Jump to: navigation, search

Wine was originally organized by topic so each related area of the API had its own directory. Unfortunately this didn't work out too well as Windows itself is rather badly organized, especially in the older parts, so now the Wine source tree is loosely based on the original Windows modules. Most of the source is concerned with implementing the Wine API, although there are also various tools, documentation, sample Winelib code, and code specific to the binary loader. Note that several of the libraries listed here are "stubbed out", meaning they still need to be implemented.

Overall structure

dlls/ DLL reimplementations (kernel32, ntdll, user32, gdiplus, etc)
documentation/ some documentation
include/ header files
libs/ libraries and a C preprocessor
loader/ the Wine program loader
programs/ several utility programs (winecfg, regedit, notepad, wordpad, etc); see List of Commands
server/ the wineserver
tools/ various tools used to build/check Wine

Under dlls/

Notes on Core DLLs

A few of the DLLs are particularly central to the Win32 API. As a result, some extra notes have been included for them:

  • ntdll : forms the core of the Windows system. It first appeared in Windows NT, but didn't become part of the consumer-oriented versions of Windows (3.1/95/98/Me) until XP. In Windows, this has become little more than a userspace to kernelspace shim, and analogously in Wine, it's mostly an interface either to the wineserver or the underlying Unix kernel. It also contains things like the PE (EXE/DLL format) dynamic linker.
  • kernel32 : mostly just forwards to ntdll in NT-based Windows, but in Windows 9x, most of the code from ntdll is here. The thinking behind this split was that NT would be able to support multiple modules for different operating system APIs, i.e. there could be a POSIX module, an OS/2 module, and kernel32 would be the Win32 module. In practice Microsoft wiped out the competition so effectively that this abstraction was never really needed or used, so in today's NT-based, Windows systems, kernel32 is mostly just a set of forwarders. In Wine, the migration of code from kernel32 to ntdll isn't finished yet so we actually have a fairly even split.
  • user32 : userspace code responsible for most of the core windowing and messaging, as well as various other random things like the clipboard, networking, and a wsprintf implementation. Originally user32 was the Windows API, until it grew large enough that having multiple DLLs made more sense, thus the rather odd and unrelated collection of code in this DLL. Basically, the very old mechanisms that date from the Windows 3.1 era are likely to be either in this DLL or kernel32.
  • ole32, oleaut32, rpcrt4 : together implement COM and DCOM.

32-bit DLLs under dlls/

activeds/ Active Directory Service Interface
actxprxy/ ActiveX Interface Marshaling
advapi32/ Crypto, systeminfo, security, eventlogging
advpack/ Reads and verifies .INF files
amstream/ Multimedia Streams
apphelp/ Application Compatibility Database
atl/ Active Template Library
avicap32/ AVI capture window class
avifil32/ COM object to play AVI files
browseui/ Internet Explorer / Windows Explorer standard UI
cabinet/ Cabinet file interface
capi2032/ Wrapper library for CAPI4Linux access
cards/ Card graphics
cfgmgr32/ Config manager
clusapi/ Cluster API
comcat/ Component category manager
comctl32/ Common controls
comdlg32/ Common dialog boxes (both 16 & 32 bit)
compstui/ Common Property Sheet User Interface (Printer Dialogs)
credui/ Credentials User Interface
crtdll/ Old C runtime library
crypt32/ Cryptography
cryptdlg/ Common Certificate Dialogs (Cryptography)
cryptdll/ Cryptography Manager
ctapi32/ Wrapper library for Chipcard Terminal access
ctl3d32/ 3D Effects for Common GUI Components
d3d10/ Direct3D (3D graphics)
d3d8/ Direct3D (3D graphics)
d3d9/ Direct3D (3D graphics)
d3dim/ Direct3D Immediate Mode
d3drm/ Direct3D Retained Mode
d3dx8/ Direct3D (3D graphics)
d3dx9_xx/ Direct3D (3D graphics, 12 versions from 24 upto 36)
d3dxof/ DirectX Files Functions
dbghelp/ Engine for symbol and module enumeration
dciman32/ DCI Manager (graphics)
ddraw/ DirectDraw (graphics)
ddrawex/ DirectDraw(graphics)
devenum/ Device enumeration (part of DirectShow)
dinput/ DirectInput (device input)
dinput8/ DirectInput (device input)
dmband/ DirectMusic Band
dmcompos/ DirectMusic Composer
dmime/ DirectMusic Interactive Engine
dmloader/ DirectMusic Loader
dmscript/ DirectMusic Scripting
dmstyle/ DirectMusic Style Engine
dmsynth/ DirectMusic Software Synthesizer
dmusic/ DirectMusic Core Services
dmusic32/ DirectMusic Legacy Port
dnsapi/ DNS support
dplay/ DirectPlay (networking)
dplayx/ DirectPlay (networking)
dpnaddr/ DirectPlay (networking)
dpnet/ DirectPlay (networking)
dpnhpast/ DirectPlay NAT Helper PAST
dpnlobby/ DirectPlay 8 lobby
dsound/ DirectSound (audio)
dssenh/ Enhanced DSS and Diffie-Hellman Crypt. Provider
dswave/ DirectMusic 'Wave
dwmapi/ Desktop Window Manager
dxdiagn/ DirectX Diagnostic Tool
faultrep/ Fault report handling
gdi32/ GDI (graphics device interface)
glu32/ OpenGL Utility library (graphics)
glut32/ OpenGL Utility Toolkit (removed in wine 0.9.27)
gphoto2.ds/ Contains libgphoto2 based TWAIN datasource driver
gpkcsp/ Gemplus (gemalto) Crypt. Service Provider
hal/ Hardware Abstraction Layer replacement
hhctrl.ocx/ HHCTRL OCX implementation
hid/ Hid User Library (Human Input Devices)
hlink/ Microsoft Hyperlink Library
hnetcfg/ Microsoft Firewall Manager
iccvid/ Radius Cinepak Video Decoder
icmp/ ICMP protocol (networking)
ifsmgr.vxd/ IFSMGR VxD implementation
imaadp32.acm/ IMA ADPCM Audio Codec
imagehlp/ PE (Portable Executable) Image Helper lib
imm32/ Input Method Manager
inetcomm/ Internet Messaging APIs
infosoft/ Wordbreaker and stemmer
initpki/ PKI Installation and Setup
inkobj/ Tablet PC functions
inseng/ Install engine
iphlpapi/ IP Helper API
itircl/ Infotech IR Local (HTML Help 1.x)
itss/ Infotech Structured Storage (HTML Help 1.x)
kernel32/ The Windows kernel
localspl/ Local Print Monitor (Printing)
localui/ Local Print Monitor User Interface (Printing)
lz32/ Lempel-Ziv compression/ decompression
mapi32/ Mail interface
mciavi32/ MCI video driver
mcicda/ MCI audio CD driver
mciseq/ MCI MIDI driver
mciwave/ MCI wave driver
midimap/ MIDI mapper
mlang/ Multi Language Support
mmdevldr.vxd/ MMDEVLDR VxD implementation
monodebg.vxd/ MONODEBG VxD implementation
mountmgr.sys// Mountpoint Manager service
mpr/ Multi-Protocol Router (networking)
mprapi/ Multi-Protocol Router Administration
msacm32/ Audio Compression Manager (multimedia)
msacm32.drv/ Audio mapper
msadp32.acm/ MS ADPCM Audio Codec
mscat/ Backend for the MakeCat command-line tool
mscms/ Color Management System
msdmo/ DirectX Media Objects
msftedit/ Rich text editing control (Version 4.1)
msg711.acm/ MS G711 Audio Codec (includes A-Law & MU-Law)
mshtml/ MS HTML component
mshtml.tlb/ MS HTML typelib
msi/ Microsoft Installer
msimg32/ Gradient and transparency (graphics)
msimtf/ Active IMM / IME Server DLL
msisys.ocx/ System information
msnet32/ Network interface
msrle32/ Video codecs
mssip32/ Microsoft Trust Subject Package
msvcirt/ C++ runtime library
msvcr71/ C runtime library 7.1
msvcrt/ C runtime library
msvcrt20/ C runtime library version 2.0
msvcrt40/ C runtime library version 4.0
msvcrtd/ C runtime library debugging
msvfw32/ 16 bit video manager
msvidc32/ Microsoft Video-1 Decoder
mswsock/ Misc networking
msxml3/ MSXML Class Factory
netapi32/ Network interface
newdev/ New Hardware Device Library
ntdll/ NT implementation of kernel calls
ntdsapi/ NT Directory Service Provider
ntoskrnl.exe/ NT Kernelmode-API replacement
objsel/ Object Picker Dialog
odbc32/ Open DataBase Connectivity driver manager
odbccp32/ Open DataBase Connectivity driver installer
ole32/ 32 bit OLE 2.0 libraries
oleacc/ OLE accessibility support
oleaut32/ 32 bit OLE 2.0 automation
olecli32/ 16 bit OLE client
oledlg/ OLE 2.0 user interface support
olepro32/ 32 bit OLE 2.0 automation
olesvr32/ 16 bit OLE server
olethk32/ 16 bit and 32 bit OLE Thunk library
opengl32/ OpenGL implementation (graphics)
powrprof/ Power Management and Profiling
printui/ Printer User Interface
propsys/ Office Document Property Handler
psapi/ Process Status interface
qcap/ DirectShow runtime
qedit/ DirectShow Editing Services
qmgr/ Background Intelligent Transfer Service (BITS) interface
quartz/ DirectShow runtime
query/ Content Index Utility
rasapi32/ Remote Access Server interface
riched20/ Rich text editing control (Version 2.0 and 3.0)
riched32/ Rich text editing control
rpcrt4/ Remote Procedure Call runtime
rsabase/ RSA encryption
rsaenh/ Crypto API (DES, 3DES, RSA, etc.)
sane.ds/ Contains sane based TWAIN datasource driver
sccbase/ Crypt. Service Provider for Infinion SICRYPT Base Smart Cards
schannel/ TSL and SSL Security Provider Interface
secur32/ Secure Service Provider Interface
security/ Secure Service Provider Interface (old DLL name)
sensapi/ System Event Notification Service
serialui/ Serial port property pages
setupapi/ Setup interface
sfc/ System File Checker (Windows File Protection)
sfc_os/ System File Checker (Windows File Protection)
shdoclc/ Shell document resources
shdocvw/ Shell document object and control
shell32/ COM object implementing shell views
shfolder/ Shell folder service
shlwapi/ Shell Light-Weight interface
slbcsp/ Crypt. Service Provider for Schlumberger Smart Cards
slc/ Software Licensing Client DLL
snmpapi/ SNMP protocol interface (networking)
softpub/ Trust Policy Provider
spoolss/ Spooler Subsystem Library ("spooler" - Service)
stdole2.tlb/ OLE Automation typelib
stdole32.tlb/ Standard OLE typelib
sti/ Still Image service
t2embed/ Embedded Fonts
tapi32/ Telephone interface
twain_32/ TWAIN Imaging device communications
unicows/ Unicows replacement (Unicode layer for Win9x)
url/ Internet shortcut shell extension
urlmon/ URL Moni``ker allows binding to a URL
usbd.sys/ USB driver
user32/ Window management, standard controls, etc.
userenv/ User - Environment and Policy Management
usp10/ Uniscribe Script Processor
uxtheme/ Theme library
vcomp/ OpenMP run-time library
vcomp90/ OpenMP run-time library 9.0
vcomp100/ OpenMP run-time library 10.0
vdhcp.vxd/ VDHCP VxD implementation
vdmdbg/ Virtual DOS machine debug library
version/ File installation library
vmm.vxd/ VMM VxD implementation
vnbt.vxd/ VNBT VxD implementation
vnetbios.vxd/ VNETBIOS VxD implementation
vtdapi.vxd/ VTDAPI VxD implementation
vwin32.vxd/ VWIN32 VxD implementation
wbemprox/ Web-Based Enterprise Management (WBEM) and Common Information Model (CIM) implementation
wevtapi/ Event Log Functions
win32skrnl/ 32-bit function access for 16-bit systems
winealsa.drv/ ALSA audio driver
wineaudioio.drv/ audioio audio driver
winecoreaudio.drv/ CoreAudio audio driver (MacOS)
winecrt0/ crt0 library
wined3d/ Wine internal Direct3D helper
winedos/ DOS features and BIOS calls (Wine specific)
wineesd.drv/ Esound audio driver
winejack.drv/ JACK audio server driver
winejoystick.drv/ Joystick driver
winemp3.acm/ Mpeg Layer 3 Audio Codec
winenas.drv/ NAS audio driver
wineoss.drv/ OSS audio driver
wineps.drv/ Postscript printer driver (Wine specific)
winex11.drv/ X11 display driver (Wine specific)
winhttp/ HTTP Services
wininet/ Internet extensions
winmm/ Multimedia (16 & 32 bit)
winnls32/ National Language Support
winscard/ Smart Card API
winspool.drv/ Printing & Print Spooler
wintab32/ Tablet device interface
wintrust/ Trust verification interface
wldap32/ LDAP support
wmi/ Windows Management Instrumentation
wnaspi32/ 16 bit Advanced SCSI Peripheral Interface
wow32/ WOW subsystem
ws2_32/ Sockets 2.0 (networking)
wsock32/ Sockets 1.1 (networking)
wtsapi32/ Terminal Services

16-bit DLLs under dlls/


Support libraries under dlls/

dxerr8/ DirectX 8 error import lib
dxerr9/ DirectX 9 error import lib
dxguid/ DirectX UUID import lib
strmiids/ Exports class CLSIDs and interface IIDs
uuid/ Windows-compatible UUID import lib

Under libs/

libs/port/ portability library
libs/wine/ Wine bootstrap and unicode support library
libs/wpp/ C preprocessor

Under tools/

tools/widl/ the IDL compiler
tools/winapi/ A Win32 API checker
tools/winebuild/ Wine build tool
tools/winedump/ a .DLL dump utility
tools/winegcc/ a MinGW command line compatible gcc wrapper
tools/winemaker a Makefile generator for winelib
tools/wmc/ the message compiler
tools/wrc/ the resource compiler

Under include/

||class="wikitable" ||include/ ||Windows standard includes |- ||include/ddk/ ||Windows DDK compatible headers |- ||include/msvcrt/ ||MSVC-compatible libc headers |- ||include/wine/ ||Wine-specific headers |}