Difference between revisions of "Wine Developer's Guide"

From WineHQ Wiki
Jump to: navigation, search
(Add a step to describe how to build Wine.)
(Simplify this TOC; this will allow the individual pages to drift, without requiring maintenance on this page. Also makes it easier to add/remove pages here.)
Line 2: Line 2:
 
== Table of Contents ==
 
== Table of Contents ==
 
=== I. Developing Wine ===
 
=== I. Developing Wine ===
<ul>
+
#[[Building Wine|Building Wine]]
====[[Building Wine|1. Building Wine]]====
+
#[[Wine Developer's Guide/Debugging Wine|Debugging Wine]]
====[[Wine Developer's Guide/Debugging Wine|2. Debugging Wine]]====
+
#[[Wine Developer's Guide/Debug Logging|Debug Logging]]
<ol>
+
#[[Wine Developer's Guide/Other Debugging Techniques|Other Debugging Techniques]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#Introduction|Introduction]]
+
#[[Wine Developer's Guide/Coding Practice|Coding Practice]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#WineDbg modes of invocation|WineDbg modes of invocation]]
+
#[[Wine_Developer's_Guide/Writing_Conformance_Tests|Writing Conformance Tests]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#Using the Wine Debugger|Using the Wine Debugger]]
+
#[[Wine Developer's Guide/Documenting Wine|Documenting Wine]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#Useful memory addresses|Useful memory addresses]]
+
<li>[[Wine_Developer's_Guide/Debugging_Wine#Configuration|Configuration]]
+
<li>[[Wine_Developer's_Guide/Debugging_Wine#WineDbg Expressions and Variables|WineDbg Expressions and Variables]]
+
<li>[[Wine_Developer's_Guide/Debugging_Wine#WineDbg Command Reference|WineDbg Command Reference]]
+
<li>[[Wine_Developer's_Guide/Debugging_Wine#Other debuggers|Other debuggers]]
+
</ol>
+
====[[Wine Developer's Guide/Debug Logging|3. Debug Logging]]====
+
<ol>
+
<li>[[Wine_Developer's_Guide/Debug_Logging#Debugging_classes|Debugging classes]]
+
<li>[[Wine_Developer's_Guide/Debug_Logging#Debugging_channels|Debugging channels]]
+
<li>[[Wine_Developer's_Guide/Debug_Logging#Are_we_debugging?|Are we debugging?]]
+
<li>[[Wine_Developer's_Guide/Debug_Logging#Helper_functions|Helper functions]]
+
<li>[[Wine_Developer's_Guide/Debug_Logging#Controlling_the_debugging_output|Controlling the debugging output]]
+
<li>[[Wine_Developer's_Guide/Debug_Logging#A_Few_Notes_on_Style|A Few Notes on Style]]
+
</ol>
+
====[[Wine Developer's Guide/Other Debugging Techniques|4. Other Debugging Techniques]]====
+
<ol>
+
<li>[[Wine_Developer's_Guide/Other_Debugging_Techniques#Understanding_undocumented_APIs|Understanding undocumented APIs]]
+
<li>[[Wine_Developer's_Guide/Other_Debugging_Techniques#How_to_do_regression_testing_using_Git|How to do regression testing using Git]]
+
<li>[[Wine_Developer's_Guide/Other_Debugging_Techniques#Which_code_has_been_tested?|Which code has been tested?]]
+
</ol>
+
====[[Wine Developer's Guide/Coding Practice|5. Coding Practice]]====
+
<ol>
+
<li>[[Wine_Developer's_Guide/Coding_Practice#Patch_Format|Patch Format]]
+
<li>[[Wine_Developer's_Guide/Coding_Practice#Some notes about style|Some notes about style]]
+
<li>[[Wine_Developer's_Guide/Coding_Practice#Quality Assurance|Quality Assurance]]
+
<li>[[Wine_Developer's_Guide/Coding_Practice#Porting Wine to new Platforms|Porting Wine to new Platforms]]
+
<li>[[Wine_Developer's_Guide/Coding_Practice#Adding New Languages|Adding New Languages]]
+
</ol>
+
====[[Wine_Developer's_Guide/Writing_Conformance_Tests|6. Writing Conformance Tests]]====
+
<ol>
+
<li>[[Wine_Developer's_Guide/Writing_Conformance_Tests#Introduction|Introduction]]
+
<li>[[Wine_Developer's_Guide/Writing_Conformance_Tests#What to test for?|What to test for?]]
+
<li>[[Wine_Developer's_Guide/Writing_Conformance_Tests#Running the tests in Wine|Running the tests in Wine]]
+
<li>[[Wine_Developer's_Guide/Writing_Conformance_Tests#Cross-compiling the tests with MinGW-w64|Cross-compiling the tests with MinGW-w64]]
+
<li>[[Wine_Developer's_Guide/Writing_Conformance_Tests#Building and running the tests on Windows|Buiding and running the tests on Windows]]
+
<li>[[Wine_Developer's_Guide/Writing_Conformance_Tests#Inside a Test|Inside a Test]]
+
<li>[[Wine_Developer's_Guide/Writing_Conformance_Tests#Writing good error messages|Writing good error messages]]
+
<li>[[Wine_Developer's_Guide/Writing_Conformance_Tests#Handling platform issues|Handling platform issues]]
+
</ol>
+
====[[Wine Developer's Guide/Documenting Wine|7. Documenting Wine]]====
+
<ol>
+
<li>[[Wine_Developer's_Guide/Documenting_Wine#An_Overview_Of_Wine_Documentation|An Overview Of Wine Documentation]]
+
<li>[[Wine_Developer's_Guide/Documenting_Wine#Writing_Wine_API_Documentation|Writing Wine API Documentation]]
+
</ol>
+
</ul>
+
 
+
 
=== II. Wine Architecture ===
 
=== II. Wine Architecture ===
<ul>
+
#[[Wine Developer's Guide/Architecture Overview|Overview]]
====[[Wine Developer's Guide/Architecture Overview|8. Overview]]====
+
#[[Wine Developer's Guide/Kernel modules|Kernel modules]]
<ol>
+
#[[Wine Developer's Guide/Windowing system|Windowing system]]
<li>[[Wine Developer's Guide/Architecture Overview#Wine Overview|Wine Overview]]
+
#[[Wine Developer's Guide/COM in Wine|COM in Wine]]
<li>[[Wine Developer's Guide/Architecture Overview#Standard Windows Architectures|Standard Windows Architectures]]
+
#[[Wine Developer's Guide/Wine and OpenGL|Wine and OpenGL]]
<li>[[Wine Developer's Guide/Architecture Overview#Wine architecture|Wine architecture]]
+
#[[Wine Developer's Guide/Outline of DirectDraw Architecture|Outline of DirectDraw Architecture]]
</ol>
+
#[[Wine Developer's Guide/Wine and Multimedia|Wine and Multimedia]]
====[[Wine Developer's Guide/Kernel modules|9. Kernel modules]]====
+
<ol>
+
<li>[[Wine_Developer's_Guide/Kernel_modules#The_Wine_initialization_process|The Wine initialization process]]
+
<li>[[Wine_Developer's_Guide/Kernel_modules#Detailed memory management|Detailed memory management]]
+
<li>[[Wine_Developer's_Guide/Kernel_modules#Multi-processing in Wine|Multi-processing in Wine]]
+
<li>[[Wine_Developer's_Guide/Kernel_modules#Multi-threading in Wine|Multi-threading in Wine]]
+
<li>[[Wine_Developer's_Guide/Kernel_modules#Structured Exception Handling|Structured Exception Handling]]
+
<li>[[Wine_Developer's_Guide/Kernel_modules#File management|File management]]
+
<li>[[Wine_Developer's_Guide/Kernel_modules#NTDLL module|<tt>NTDLL</tt> module]]
+
<li>[[Wine_Developer's_Guide/Kernel_modules#KERNEL32 Module|<tt>KERNEL32</tt> Module]]
+
</ol>
+
====[[Wine Developer's Guide/Windowing system|10. Windowing system]]====
+
<ol>
+
<li>[[Wine Developer's Guide/Windowing system#USER32 Module|<tt>USER32</tt> Module]]
+
<li>[[Wine Developer's Guide/Windowing system#X Windows System interface|X Windows System interface]]
+
</ol>
+
====[[Wine Developer's Guide/COM in Wine|11. COM in Wine]]====
+
<ol>
+
<li>[[Wine Developer's Guide/COM in Wine#Writing COM Components for Wine|Writing COM Components for Wine]]
+
<li>[[Wine Developer's Guide/COM in Wine#A brief introduction to DCOM in Wine|A brief introduction to DCOM in Wine]]
+
</ol>
+
====[[Wine Developer's Guide/Wine and OpenGL|12. Wine and OpenGL]]====
+
<ol>
+
<li>[[Wine Developer's Guide/Wine and OpenGL#What is needed to have OpenGL support in Wine|What is needed to have OpenGL support in Wine]]
+
<li>[[Wine Developer's Guide/Wine and OpenGL#How it all works|How it all works]]
+
<li>[[Wine Developer's Guide/Wine and OpenGL#Known problems|Known problems]]
+
</ol>
+
====[[Wine Developer's Guide/Outline of DirectDraw Architecture|13. Outline of DirectDraw Architecture]]====
+
<ol>
+
<li>[[Wine Developer's Guide/Outline of DirectDraw Architecture#DirectDraw inheritance tree|DirectDraw inheritance tree]]
+
<li>[[Wine Developer's Guide/Outline of DirectDraw Architecture#DirectDrawSurface inheritance tree|DirectDrawSurface inheritance tree]]
+
<li>[[Wine Developer's Guide/Outline of DirectDraw Architecture#Interface Thunks|Interface Thunks]]
+
<li>[[Wine Developer's Guide/Outline of DirectDraw Architecture#Logical Object Layout|Logical Object Layout]]
+
<li>[[Wine Developer's Guide/Outline of DirectDraw Architecture#Creating Objects|Creating Objects]]
+
</ol>
+
====[[Wine Developer's Guide/Wine and Multimedia|14. Wine and Multimedia]]====
+
<ol>
+
<li>[[Wine Developer's Guide/Wine and Multimedia#Overview|Overview]]
+
<li>[[Wine Developer's Guide/Wine and Multimedia#Multimedia architecture|Multimedia architecture]]
+
<li>[[Wine Developer's Guide/Wine and Multimedia#Low level layers|Low level layers]]
+
<li>[[Wine Developer's Guide/Wine and Multimedia#Mid level drivers (MCI)|Mid level drivers (MCI)]]
+
<li>[[Wine Developer's Guide/Wine and Multimedia#High level layers|High level layers]]
+
<li>[[Wine Developer's Guide/Wine and Multimedia#MS ACM DLLs|MS ACM DLLs]]
+
<li>[[Wine Developer's Guide/Wine and Multimedia#MS Video DLLs|MS Video DLLs]]
+
<li>[[Wine Developer's Guide/Wine and Multimedia#Multimedia configuration|Multimedia configuration]]
+
</ol>
+
  
 
===List of Tables===
 
===List of Tables===
Line 136: Line 43:
 
:[[Wine Developer's Guide/Wine and Multimedia#13-3|13-3. Wine VIDC drivers]]
 
:[[Wine Developer's Guide/Wine and Multimedia#13-3|13-3. Wine VIDC drivers]]
 
:[[Wine Developer's Guide/Wine and Multimedia#13-4|13-4. Wine multimedia configuration scheme]]
 
:[[Wine Developer's Guide/Wine and Multimedia#13-4|13-4. Wine multimedia configuration scheme]]
</ul>
 
  
 
== Authors ==
 
== Authors ==

Revision as of 09:55, 15 January 2019

Table of Contents

I. Developing Wine

  1. Building Wine
  2. Debugging Wine
  3. Debug Logging
  4. Other Debugging Techniques
  5. Coding Practice
  6. Writing Conformance Tests
  7. Documenting Wine

II. Wine Architecture

  1. Overview
  2. Kernel modules
  3. Windowing system
  4. COM in Wine
  5. Wine and OpenGL
  6. Outline of DirectDraw Architecture
  7. Wine and Multimedia

List of Tables

1-1. WineDbg misc commands
1-2. WineDbg flow control commands
1-3. WineDbg break & watch points
1-4. WineDbg stack manipulation
1-5. WineDbg directory & source file manipulation
1-6. WineDbg list command examples
1-7. WineDbg displays
1-8. WineDbg disassembly
1-9. WineDbg memory management
1-10. WineDbg Win32 objects management
1-11. WineDbg debug channels management
1-12. WineDbg debug channels management
1-13. Debuggers comparison
7-1. Wine executables
7-2. Memory layout (Windows and Wine)
8-1. DOS, Win32 and NT paths equivalences
8-2. File systems' properties
8-3. Mapping of Windows device names into Unix device names
8-4. Function consoles implementation comparison
8-5. Console registry settings
13-1. Wine MCI drivers
13-2. Wine ACM drivers
13-3. Wine VIDC drivers
13-4. Wine multimedia configuration scheme

Authors

Uwe Bonnes; Jonathan Buzzard; Zoran Dzelajlija; Klaas van Gend; Francois Gouget; Jon Griffiths; Albert den Haan; Mike Hearn; André Hentschel; Ove Kaaven; Tony Lambregts; Marcus Meissner; Gerard Patel; Dimitrie Paun; Michele Petrovski; Eric Pouech; Douglas Ridgway; John Sheets; Lionel Ulmer; Ulrich Weigand; Morten Welinder; Jeremy White