Difference between revisions of "Win32k.sys"

From ReactOS Wiki
Jump to: navigation, search
(14 intermediate revisions by one other user not shown)
Line 1: Line 1:
'''See [[Arwinss]] page for the alternative win32 subsystem implementation effort.'''
'''Kernel-mode subsystem server (Win32K)'''
'''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 <code>win32k.sys</code> which communicates directly with the graphics driver.
{{Code history|subsystems/win32/win32k}}
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.
== See also ==
* [[Arwinss]] page for the alternative win32 subsystem implementation effort.
* [[Win32k design guideline]]
* [[Csrss.exe|User-mode subsystem server]]
* [[wikipedia:Windows API#Overview]]
[[Category:System Services]]
* 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]])
* Win32k: Support for VMware video drivers ([[Gé van Geldorp]])
* Win32k: VGA Driver loaded from registry key ([[Gé van Geldorp]])
* Win32k: Support for MS VGA driver under VMware ([[Gé van Geldorp]])
* Win32k: Add support for 8-bit and 32-bit displays ([[Gé van Geldorp]])
* Win32k: Switch back to the command prompt when pressing Close button ([[Gé van Geldorp]])
* Win32k: Implemented several window positioning functions ([[Richard Campbell]])
* Win32k: InvalidateRgn, InvalidateRect, PolyLine ([[Tim Jobling]])
* Win32k: Added support for allocating a DCE for each window ([[Richard Campbell]])
* Scrollbar thumbs ([[Thomas Weidenmueller]])
* Implemented several scrollbar functions ([[Thomas Weidenmueller]])
* Improved mouse (buttons) handling ([[Thomas Weidenmueller]])
* RoundRect ([[Royce Mitchell III]])
* Implemented partial ReleaseDC() ([[Gé van Geldorp]])
* Fix 1bbp blits ([[Filip Navara]])
* Implement GUI consoles ([[Gé van Geldorp]])
* Resolution and screen depth change support for VMWare ([[Gé van Geldorp]])
* DirectDraw groundwork ([[Peter Bajusz]])
* Window activation/focus ([[Filip Navara]], [[Gé van Geldorp]])
* StretchDIBits implementation ([[Filip Navara]])
* Initial implementation of message hooks ([[Gé van Geldorp]])
* Support for the FR_PRIVATE and FR_NOT_ENUM flags for AddFontResourceEx ([[Thomas Weidenmueller]])
* Implement real locking for GDIOBJ objects ([[Gé van Geldorp]])
* Stretchblitting 32->32, 8->8 bpp implemented ([[Aleksey Bragin]])
* GetMessageExtraInfo and SetMessageExtraInfo implementations ([[Thomas Weidenmueller]])
* Initial implementation of maximize/restore and minimize buttons for windows ([[Thomas Weidenmueller]])
* Implemented WM_SETCURSOR messages ([[Thomas Weidenmueller]])
* Serialize access to display driver ([[Gé van Geldorp]])
* Implemented SetCursor and rewrote some cursor/icon routines ([[Thomas Weidenmueller]])
* Support for RASTERCAPS in NtGdiGetDeviceCaps ([[Filip Navara]])
* RLE4/8 Bitmap Compression support (Jonathan Wilson)
* LR_SHARED flag support for LoadIcon and LoadCursor ([[Thomas Weidenmueller]])
* Rewritten painting implementation ([[Filip Navara]])
* Font smoothing implementation ([[Thomas Weidenmueller]])
* GetGUIThreadInfo implementation ([[Thomas Weidenmueller]])
* EnumProps, EnumPropsEx implementations ([[Thomas Weidenmueller]])
* Marshall messages across process boundaries (not complete yet) and generalize message sending from kernel ([[Gé van Geldorp]])
* Initial NtGdiStretchBlt implementation ([[Aleksey Bragin]])
* Message queue fixes ([[Thomas Weidenmueller]], [[Mike Nordell]])
* Palette fixes ([[Filip Navara]])
* Move desktop window proc from WIN32K to CSRSS ([[Gé van Geldorp]])
* Fixed window activation bug (GA_ROOTOWNER -> GA_ROOT) ([[Filip Navara]])
* Preparing for the win32k emulated mouse cursor support ([[Filip Navara]])
* Implemented MenuItemFromPoint() ([[Thomas Weidenmueller]])
* Fixed hittest-code so it returns HTMENU properly ([[Thomas Weidenmueller]])
* Implemented multiline menu bars ([[Thomas Weidenmueller]])
* Release mutex on error exit ([[Gé van Geldorp]])
* GetAncestor() doesn't set a last-error if the handle passed is the desktop window, it just returns NULL ([[Thomas Weidenmueller]])
* Don't activate disabled windows ([[Thomas Weidenmueller]])
* Release window object when destroying window children and skip only children that have a different parent window ([[Thomas Weidenmueller]])
* Activate modal dialog when clicking on a disabled window ([[Thomas Weidenmueller]])
* Fix cross-thread WM_SETTEXT messages ([[Gé van Geldorp]])
* Dynamically load fonts on startup
* Seperated the Caption font and the icon title font ([[Richard Campbell]])
* Fixed missing release of window objects ([[Thomas Weidenmueller]])
* Resolve two GDI handle leaks ([[Filip Navara]])
* Faster GDI handle allocation strategy ([[Filip Navara]])
* Update DC when moving a window. Fixes bug #5 ([[Gé van Geldorp]], [[Filip Navara]])
* Handle NULL window as special case when computing visible region for GetDC. Fixes bug #59 ([[Gé van Geldorp]])
* Fix NtUserScroll[WindowEx/DC] ([[Filip Navara]])
* Implemented ChildWindowFromPoint(Ex) ([[Richard Campbell]])
* Rewritten NtGdiEllipse with improved and optimized algorithm ([[Filip Navara]])
* Use window thread instead of current thread to obtain desktop ([[Gé van Geldorp]])
* Fix race condition when one thread changes the update region of a window and another thread retrieves a paint message for that window ([[Gé van Geldorp]])
* Don't callback from kernel to usermode if the thread is exiting; fixes bug #83 ([[Gé van Geldorp]])
* Clip region to be bitblt'ed against the valid source region. Fixes bug #152 ([[Gé van Geldorp]])
* Fixed software mouse pointer handling to work correctly with MouseSafety* routines ([[Filip Navara]])
* Fixed algorithm for 4BPP bitblts with ROP != SRCCOPY ([[Filip Navara]])
* Reclaculate window client size in NtUserSetMenu even if the window isn't visible ([[Filip Navara]])
* Properly move child windows in NtUserSetWindowPos ([[Filip Navara]])
* Very basic implementation of ExtEscape ([[Filip Navara]])
* Fix race condition resulting in WM_xBUTTONUP sometimes being delivered before WM_xBUTTONDOWN ([[Gé van Geldorp]])
* Fix double click ([[Gé van Geldorp]])
* Implemented horizontal and vertical gradients in GradientFill() ([[Thomas Weidenmueller]])
* Use GradientFill() for gradient captions ([[Thomas Weidenmueller]])
* Don't copy from/to outside the visible screen region ([[Gé van Geldorp]])
* Return more correct error codes from NtUserRegisterClassExWOW ([[Filip Navara]])
* Delete atom in NtUserUnregisterClass ([[Filip Navara]])
* Corrected DC locking in NtGdiSetDIBColorTable ([[Filip Navara]])
* Check region handles in NtGdiPaintRgn ([[Filip Navara]])
* Added EngGetCurrentProcessId() and EngGetCurrentThreadId() ([[Thomas Weidenmueller]])
* Fixed clipping code in NtGdiGetPixel ([[James Pritchard]])
* Fix distortion by StretchBlt ([[Filip Navara]], [[Waldo Alvarez Cañizares]])
* Implement menu handling ([[Gé van Geldorp]])
* Top level windows have menus, child windows have IDs ([[Gé van Geldorp]])
* SPI_GETNONCLIENTMETRICS and SPI_GETICONTITLELOGFONT now load their settings from the registry ([[Richard Campbell]])
* Fixed WindowFromPoint() to search backwards ([[Thomas Weidenmueller]])
* Fixed 8 8 bpp, 1616 bpp and 32 32 bpp stretchblitting ([[Waldo Alvarez Cañizares]])
* Added pool tags for better debugging ([[Thomas Weidenmueller]])
* Fixed a few race conditions in painting code ([[Filip Navara]])
* Fix double release of fast mutex ([[Gé van Geldorp]])
* Fixed releasing of window object in IntValidateParent and NtUserRedrawWindow ([[Thomas Weidenmueller]])
* Fixed potencial deadlock in IntPaintWindows ([[Thomas Weidenmueller]])
* Modifed DceUpdateVisRgn to correctly handle situations when DceGetVisRgn returns NULL ([[Filip Navara]])
* Fixed the alternative version of VIS_ComputeVisibleRegion and made it the one and only, because it's smaller and faster than the original one ([[Filip Navara]])
* Prevent double unlinking of window ([[Filip Navara]])
* Implement keyboard navigation for menus ([[Gé van Geldorp]])
* Fix mono -> color bitblts ([[Gé van Geldorp]])
* Fixed WindowFromPoint() to send WM_NCHITTEST messages to windows that belong to the current process ([[Thomas Weidenmueller]])
* Fix bug #129 ([[Filip Navara]])
* Fixed bug 167 ([[Art Yerkes]])

Latest revision as of 07:57, 15 May 2014

The page Win32k.sys is a short article on something that should have a lot more information written on it.
If you know anything else about it, you are STRONGLY encouraged to add the information in. If you are unsure of proper formatting or style, add it to the talk page or this page itself as you think best and others will help.

Kernel-mode subsystem server (Win32K)

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.

Commit history (Source code can be found in: /reactos/subsystems/win32/win32k)

See also