WineHQ

Wine Developer's Guide: Difference between revisions

(De-emphasize the authors, add myself :-/.)
(add the wip banner.)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
{{wip}}
== Table of Contents ==
== Table of Contents ==
=== I. Developing Wine ===
=== I. Developing Wine ===
<ul>
#[[Building Wine|Building Wine]]
====[[Wine Developer's Guide/Debugging Wine|1. Debugging Wine]]====
#[[Wine User's Guide|Running Wine]]
<ol>
#[[Wine Developer's Guide/Debugging Wine|Debugging Wine]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#Introduction|Introduction]]
#[[Wine Developer's Guide/Debug Logging|Debug Logging]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#WineDbg modes of invocation|WineDbg modes of invocation]]
#[[Wine Developer's Guide/Other Debugging Techniques|Other Debugging Techniques]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#Using the Wine Debugger|Using the Wine Debugger]]
#[[Wine Developer's Guide/Coding Practice|Coding Practice]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#Useful memory addresses|Useful memory addresses]]
#[[Wine_Developer's_Guide/Writing_Conformance_Tests|Writing Conformance Tests]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#Configuration|Configuration]]
#[[Submitting Patches|Submitting Patches]]
<li>[[Wine_Developer's_Guide/Debugging_Wine#WineDbg Expressions and Variables|WineDbg Expressions and Variables]]
#[[Wine Developer's Guide/Documenting Wine|Documenting Wine]]
<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|2. 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|3. 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|4. 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|5. 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|6. 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|7. 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|8. Kernel modules]]====
 
<ol>
=== III. Miscellaneous references ===
<li>[[Wine_Developer's_Guide/Kernel_modules#The_Wine_initialization_process|The Wine initialization process]]
# [[Vim Tips|Tips for Vim users]]
<li>[[Wine_Developer's_Guide/Kernel_modules#Detailed memory management|Detailed memory management]]
#[[Wine and Valgrind|Running Wine under Valgrind]]
<li>[[Wine_Developer's_Guide/Kernel_modules#Multi-processing in Wine|Multi-processing in Wine]]
#[[List Of Windows Messages|A list of windows messages, by value]]
<li>[[Wine_Developer's_Guide/Kernel_modules#Multi-threading in Wine|Multi-threading in Wine]]
#[[Ternary Raster Ops|The format of a ternary raster operation code]]
<li>[[Wine_Developer's_Guide/Kernel_modules#Structured Exception Handling|Structured Exception Handling]]
#[http://books.google.com/books?id=-O92IIF1Bj4C Windows Graphics Programming: Win32 GDI and DirectDraw] by [http://www.fengyuan.com Feng Yuan] (Working at HP for Printer Drivers; Now at Microsoft for WPF and XPS)
<li>[[Wine_Developer's_Guide/Kernel_modules#File management|File management]]
#[[:Category:Development|All Development Wiki pages]]
<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|9. 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|10. 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|11. 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|12. 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|13. 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 135: Line 55:
:[[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 ==

Latest revision as of 16:36, 15 January 2019

Work in progress: This page is currently undergoing extensive revision. External links to specific parts of this page may now be broken due to the section having been edited, moved, merged with another section, or removed altogether. Consult the table of contents to find the section you are looking for. There may be related discussion on the talk page.

Table of Contents

I. Developing Wine

  1. Building Wine
  2. Running Wine
  3. Debugging Wine
  4. Debug Logging
  5. Other Debugging Techniques
  6. Coding Practice
  7. Writing Conformance Tests
  8. Submitting Patches
  9. 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

III. Miscellaneous references

  1. Tips for Vim users
  2. Running Wine under Valgrind
  3. A list of windows messages, by value
  4. The format of a ternary raster operation code
  5. Windows Graphics Programming: Win32 GDI and DirectDraw by Feng Yuan (Working at HP for Printer Drivers; Now at Microsoft for WPF and XPS)
  6. All Development Wiki pages

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

This page was last edited on 15 January 2019, at 16:36.