Difference between revisions of "Win32k.sys"

From ReactOS Wiki
Jump to: navigation, search
Line 440: Line 440:
* Implemented more win2k-like and much faster gdi handle table ([[Thomas Weidenmueller]])
* Implemented more win2k-like and much faster gdi handle table ([[Thomas Weidenmueller]])
* Improved inheritance of window stations/desktops where threads/processes are created in ([[Thomas Weidenmueller]])
* Improved inheritance of window stations/desktops where threads/processes are created in ([[Thomas Weidenmueller]])
* Implement NtGdiDdGetDriverInfo and NtGdiDdWaitForVerticalBlank for directx. Untested yet. ([[Magnus Olsen]])

Revision as of 04:29, 17 March 2012


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)









  • Handle correctly bottom-up surfaces in the VGA driver. (Filip Navara)
  • Stop processing if exact match is found in ClosestColorMatch. (Filip Navara)
  • Fixed locking in NtGdiGetBitmapBits. (Filip Navara)
  • Removed IntCopyBitmap and replaced it's usage by BITMAPOBJ_CopyBitmap. (Filip Navara)
  • Fixed setting of SURFOBJ->pvBits and SURFOBJ->pvScan0 in EngCreateBitmap for bottom-up surfaces. (Filip Navara)
  • Call IntEngBitBlt instead of EngBitBlt from EngCopyBits. (Filip Navara)
  • Correctly set the SURFOBJ->hsurf field. (Filip Navara)
  • Support for bottom-up mouse cursors in the Eng* cursor emulation routines. (Filip Navara)
  • Fix locking in error cases of NtGdiRestoreDC (get Primitives demo to start). (Filip Navara)
  • Fix BitmapFormat to return 0 for unknown bit depth. (Filip Navara)
  • New implementation of NtGdiGetDIBits. (Filip Navara)
  • Fixed buffer handling and coordinate translation in IntGdiPolyline. (Filip Navara)
  • Allocate memory from paged pool in EngAllocMem. (Filip Navara)
  • Support resursive locking of the GDI objects. (Filip Navara)
  • Call EngMovePointer instead of DrvMovePointer if driver DrvSetPointerShape returned SPS_DECLINE. (Filip Navara)
  • Don't continue execution if there is no exception handler. (Filip Navara)
  • Send the cursor to display driver in top-down format. (Filip Navara)
  • Guard against out of bounds access to KeyboardLayout->pusVSCtoVK in W32kKeyProcessMessage. (Filip Navara)
  • Fixed SetKeyState to correctly index the keyboard state table. (Filip Navara)
  • Use absolute value of the color difference when calculating color match rating. (Filip Navara)
  • Handle allocation failure in IntCreateBitmap. (Filip Navara)
  • Don't allow creating surface with BitmapFormat == 0 (Invalid) in IntCreateSurface. (Filip Navara)
  • Fixed ExcludeClipRgn for case when DC contained no clipping region before the call to this function. (Filip Navara)
  • Don't create XLATEOBJ for BitBlt and StretchBlt operations that don't use source DC. (Filip Navara)
  • Honor the "Extended" bit in SetKeyState. (Filip Navara)
  • Display window icon only if there is any. (Filip Navara)
  • DrawIcon should return TRUE if it succeeds. (Filip Navara)
  • Handle UnsafeRect == NULL case in NtUserGetUpdateRect. (Filip Navara)
  • Implementation of [NtGdi]GetTextFace[W] and [NtGdi]GetFontData[W]. (Filip Navara)
  • Fixed locking in NtGdiGetCharWidth32. This caused problems with AbiWord reported by Jason Filby. (Filip Navara)
  • Add IntEngCreateSrcMonoXlate. (Filip Navara)
  • Get rid of compiler warnings in Win32k. (Filip Navara)
  • Handle indexed palettes in IntEngCreateSrcMonoXlate. (Filip Navara)
  • Fix WS_CAPTION style handling. (Filip Navara)
  • Maintain higher internal precision during font rendering. (Filip Navara)
  • Honour bitmap->bitmap_left while rendering. (Filip Navara)
  • Correctly handle ClipCursor(NULL) case. (Filip Navara)
  • Implemented NtUserEnumDisplaySettings/IntEnumDisplaySettings (Gregor Anich)
  • Only accept matching palette (Gé van Geldorp)
  • FindWindow() should search the threads desktop, not the active one. (Gé van Geldorp)
  • Implement NtUserBuildNamesList() (Gé van Geldorp)
  • If SendMessageTimeout() times out, GetLastError() should return 0 (Gé van Geldorp)
  • Simplified assigning of DDI functions (Thomas Weidenmueller)
  • Fixed graphics (gui) checks (Thomas Weidenmueller)
  • Added support to paint and change desktop wallpapers (Thomas Weidenmueller)



  • Implement NtGdiDdGetDriverInfo and NtGdiDdWaitForVerticalBlank for directx. Untested yet. (Magnus Olsen)