From ReactOS Wiki
Revision as of 02:59, 5 March 2012 by BrentNewland (talk | contribs)
Jump to: navigation, search

See Arwinss page for the alternative win32 subsystem implementation effort.

See also Win32k_design_guideline

The Graphics Device Interface Provides functionality for outputting graphical content to monitors, printers and other output devices. It resides in gdi.exe on 16-bit Windows, and gdi32.dll on 32-bit Windows in user-mode. Kernel-mode GDI support is provided by win32k.sys which communicates directly with the graphics driver.


  • Win32k: Initial implementation of regions and clipping
  • Win32k: Object cleanup on process deletion Eugene Ingerman
  • Win32k: Initial window painting code, bitmap loading David Welch
  • Win32k: Callbacks and messaging improvements David Welch
  • Win32k: Mouse messaging David Welch
  • Win32k: DIB Fixes Jason Filby


  • Win32k: Rewrote gdi (Engxxx) objects,
  • Made GDI object locking exclusive,
  • Added functions for locking multiple objects,
  • Color translation now works properly,
  • Implemented several DC functions (Eugene Ingerman)
  • Win32k: Initial scrollbar code (Jason Filby)







  • Set the previous pointer from the next block, if some blocks was merged (in add_to_free_list) (Hartmut Birr)
  • Free or recycle the remaining path string after a call to ObFindObject (Hartmut Birr)
  • Lock the pages always in MmProbeAndLockPages (Hartmut Birr)
  • Locked the pages in MmCommitPagedPoolAddress, if it is necessary (Hartmut Birr)
  • Marked a cache segment as page out in progress to prevent from recursive calls to MmPageOutPhysicalAddress; fixed bug 220 (Hartmut Birr)
  • Protected the callback stack list with a spinlock (Hartmut Birr)
  • Made it possible to allocate a pageop only if no other pageop for the given address exists (Hartmut Birr)
  • Try to pageout a page only if no other access to the page exist (Hartmut Birr)
  • Gave a free page only to the next waiting request (in MmReleasePageMemoryConsumer), if sufficient free pages are available (Hartmut Birr)
  • Initialized the object tag to prevent the tag 0xcccccccc (Hartmut Birr)
  • Removed dirty loading of symbol files from ExpInitializeExecutive (Hartmut Birr)
  • Fixed the loading of symbol files (Hartmut Birr)
  • Try to avoid crashing when dumping out a corrupted stack (David Welch)
  • Avoid a crashing when trying to process an exception early in the boot process (David Welch)
  • Use an event rather than a semaphore to wake up the thread that writes debug output to disk (David Welch)
  • Added basic tracing, breakpoints and disassembly to the kernel debugger (David Welch)
  • Added disassembler from gdb (David Welch)
  • Record feature information from cpuid (David Welch)
  • Fixed bug with recalling previous input (David Welch)
  • Switch back to text mode when entering the debugger (David Welch)
  • Fixed whole page allocations since the handle table code now relies on allocations being eight byte aligned (David Welch)
  • Fix reading past the end of the pool block (David Welch)
  • Fix key name size calculation bugs (Eric Kohl)
  • Fix NtOpenThreadToken() and NtSetInformationThread() (Eric Kohl)
  • Clean-up NtQueryInformationToken() (Eric Kohl)
  • Fully implement RtlFormatCurrentUserKeyPath() (Eric Kohl)
  • Fixed crashes that were cause by the changes to the service parameter table (Eric Kohl)
  • Work on thread-awareness in gdbstub (Ge van Geldorp)
  • Make IoGetDeviceInterfaces more compatible with the native version (Matthew Brace)
  • Hardcode build number consistent with major/minor version (NVidia driver requires this) (Ge van Geldorp)
  • Tell apps we're NT4 SP6, VB runtime will fail if we report SP0 (Ge van Geldorp)
  • Allow GDB 6 to backtrace over a syscall (Ge van Geldorp)
  • Disable pool validation since it slows down execution too much (Ge van Geldorp)
  • Locale values are specified in hexadecimal numbers (Filip Navara)
  • Corrected EiAllocatePool prototype (Filip Navara)
  • Fixed RtlNtStatusToDosErrorNoTeb (Filip Navara)
  • Removed the incorrect implementations of Device Interface functions (Filip Navara)
  • Don't zero memory allocated by ExAllocatePool (Filip Navara)
  • Fixed RtlFormatCurrentUserKeyPath and it's use (Filip Navara)
  • Fill correctly all members of the returned device object in IoCreateDevice (Filip Navara)
  • Don't bug check in loader when export isn't found, only report it and don't load the module (Filip Navara)
  • If we know a module path while loading, use it for searching for the import modules (Filip Navara)
  • Modified LdrpBuildModuleBaseName to not strip the extension from file name (Filip Navara)
  • Call create process notify routines from NtCreateProcess (Filip Navara)
  • Started PsSetLoadImageNotifyRoutine implementation, it just registers the callback, but doesn't call it (Filip Navara)
  • Fixed querying of thread locale (Filip Navara)
  • Implemented IoGetDriverObjectExtension and IoAllocateDriverObjectExtension (Filip Navara)
  • Don't load PnP drivers if they're disabled (Filip Navara)
  • Save pointer to PnP tree device node in device object's DeviceObjectExtension (Filip Navara)
  • Add function IopGetDeviceNode for getting device node from device object pointer (Filip Navara)
  • Rewritten IoGetDeviceProperty to use values that are in device node instead of sending Irps (Filip Navara)
  • Lower IRQL in error case of IoAllocateDriverObjectExtension (Filip Navara)
  • Support for upper level filter drivers (Filip Navara)
  • Rewritten some driver loading functions to get higher control of the driver loading and initialization process, fixes bug #263 (Filip Navara)
  • Added support for lower level filter drivers (Filip Navara)
  • Minor cleanup and fixed few memory leaks on driver unload (Filip Navara)
  • Fixed a minor bug in IopLoadServiceModule that caused crashes for disabled drivers (Filip Navara)
  • Don't bugcheck if FDO wasn't attached (Filip Navara)
  • Fixed cygwin fork section map problem, this fixes map_dup_inherit (Art Yerkes, David Welch)
  • MmMapLockedPages patch (Anich Gregor)
  • Initialize LPC-related fields in ETHREAD (Emanuele Aliberti)
  • Finish off NtDuplicateToken (Jason Filby)