Difference between revisions of "Win32k.sys"

From ReactOS Wiki
Jump to: navigation, search
m
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[:Category:System_Services]]
+
{{stub}}
 +
'''Kernel-mode subsystem server (Win32K)'''
  
'''See [[Arwinss]] page for the alternative win32 subsystem implementation effort.'''
+
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.
  
'''See also [[Win32k_design_guideline]]'''
+
{{Code history|subsystems/win32/win32k}}
  
Kernel-mode subsystem server (Win32K)
+
== See also ==
 +
* [[Arwinss]] page for the alternative win32 subsystem implementation effort.
 +
* [[Win32k design guideline]]
 +
* [[Csrss.exe|User-mode subsystem server]]
 +
* [[wikipedia:Windows API#Overview]]
  
See also [[Csrss.exe|User-mode subsystem server]]
+
[[Category:Development]]
 
+
[[Category:Drivers]]
http://en.wikipedia.org/wiki/Windows_API#Overview
+
[[Category:System Services]]
 
 
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.
 
 
 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/?view=log
 
 
 
[[ChangeLog-0.0.21]]
 
* 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]]
 
 
 
[[ChangeLog-0.1.0]]
 
* 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]])
 
 
 
[[ChangeLog-0.1.1]]
 
* 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]])
 
 
 
[[ChangeLog-0.1.4]]
 
 
 
* 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]])
 
 
 
[[ChangeLog-0.1.5]]
 
 
 
* 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]])
 
 
 
[[ChangeLog-0.2.0]]
 
* 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]])
 
 
 
[[ChangeLog-0.2.1]]
 
* 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]])
 
 
 
[[ChangeLog-0.2.2]]
 
*Fix race condition resulting in WM_xBUTTONUP sometimes being broken ([[Ge van Geldorp]])
 
*Don't copy from/to outside the visible screen region ([[Ge van Geldorp]])
 
*Implement menu handling ([[Ge van Geldorp]])
 
*Top level windows have menus, child windows have IDs ([[Ge van Geldorp]])
 
*Fix double release of fast mutex ([[Ge van Geldorp]])
 
*Implement keyboard navigation for menus ([[Ge van Geldorp]])
 
*Fix race condition ([[Ge van Geldorp]])
 
*Recursively search sub menus when a command id is specified ([[Ge van Geldorp]])
 
*Fixed mono -> color bitblts ([[Ge van Geldorp]])
 
*Correct menu bars for windows not originating at top-left of screen ([[Ge van Geldorp]])
 
*Mark update regions as global objects ([[Ge van Geldorp]])
 
*Delay unlinking of windows until after all messages have been sent ([[Ge van Geldorp]])
 
*Translate pixel value from internal pixel format to RGB; fixes bug #251 ([[Ge van Geldorp]])
 
*Return a valid (empty) visible region when the window is not visible ([[Ge van Geldorp]])
 
*Handle 1bpp DIBs in NtGdiCreateDIBitmap ([[Ge van Geldorp]])
 
*Implement EnumFontFamilies(Ex)A/W() and TranslateCharsetInfo() ([[Ge van Geldorp]])
 
*Implement GetCharWidthA/W() ([[Ge van Geldorp]])
 
*Implement GetUpdateRect() and harden NtUserGetUpdateRect() ([[Ge van Geldorp]])
 
*Implement GetObjectA/W() for fonts ([[Ge van Geldorp]])
 
*Prevent deletion of system-owned objects ([[Ge van Geldorp]])
 
*Fix filling of MENUITEMINFO in InsertMenu() ([[Ge van Geldorp]])
 
*Implement scrollbar controls ([[Ge van Geldorp]])
 
*Simple font substitution and matching ([[Ge van Geldorp]])
 
*Implement TOPMOST windows ([[Ge van Geldorp]])
 
*Remove window timers when window is destroyed ([[Ge van Geldorp]])
 
*Implement 32bpp -> 32bpp copy with color translation ([[Ge van Geldorp]])
 
*Use lookaside lists for better performance ([[Ge van Geldorp]])
 
*Special case for faster one rectangle regions ([[Ge van Geldorp]])
 
*Honour font spacing requested by caller ([[Ge van Geldorp]])
 
*Fix scanline increment for 32bpp stretch blts ([[Ge van Geldorp]])
 
*andle regions in SelectObject() ([[Ge van Geldorp]])
 
*Pass args to MsqSendMessage in correct order ([[Ge van Geldorp]])
 
*Fix for mouse detection problem ([[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]])
 
*Fixed clipping bug in TransparentBlt() ([[Filip Navara]])
 
*Return more correct error codes from NtUserRegisterClassExWOW ([[Filip Navara]])
 
*Check region handles in NtGdiPaintRgn ([[Filip Navara]])
 
*Fixed releasing of window object in IntValidateParent and NtUserRedrawWindow ([[Filip Navara]])
 
*Fixed deadlock in IntFindWindowToRepaint ([[Filip Navara]])
 
*Modifed DceUpdateVisRgn for performance enhancment ([[Filip Navara]])
 
*Fixed couple of mutex locking issues ([[Filip Navara]])
 
*Fixed GDI handle leak ([[Filip Navara]])
 
*Fix for race condition that should never happen ([[Filip Navara]])
 
*Implemented EngModifySurface, DRIVER_FindMPDriver ([[Filip Navara]])
 
*Fixed NtGdiCreateCompatibleBitmap fix to use correct Bits ([[Filip Navara]])
 
*Minor corrections to emulated mouse pointer handling ([[Filip Navara]])
 
*Fixed few bugs related to SUROBJ initialization ([[Filip Navara]])
 
*Unlock surface in error case of EngModifySurface ([[Filip Navara]])
 
*Fixed non-SRCCOPY BitBlts to 1bpp surfaces ([[Filip Navara]])
 
*Fixed BitBlts from 4bpp surfaces ([[Filip Navara]])
 
*Fixed handling of WM_GETICON message ([[Filip Navara]])
 
*Fixed window-less timers ([[Filip Navara]])
 
*Changed the internal brush object to be ([[almost]]) Win32k compatible ([[Filip Navara]])
 
*Fixed 8bpp StretchBlt ([[Filip Navara]])
 
*Fixed 4bpp to 4bpp non-SRCCOPY blits ([[Filip Navara]])
 
*Fixed 1bpp to 1bpp non-SRCCOPY blits to work when the destination doesn't start at exact byte ([[Filip Navara]])
 
*Reenabled 55AA brush for scrollbar ([[Filip Navara]])
 
*Fixed BITMAPOBJ_GetWidthBits to do WORD alignment and not DWORD ([[Filip Navara]])
 
*Implemented TransparentBlt() on 32bpp surfaces ([[Filip Navara]])
 
*Fixed bugs in 1bpp code causing memory corruption ([[Filip Navara]])
 
*Lock the surface even for GDI blits in IntEngBitBlt ([[Filip Navara]])
 
*Fixed order of bits in a byte for pattern brushes ([[Filip Navara]])
 
*Implement brush origin for 4bpp blits ([[Filip Navara]])
 
*Implemented horizontal and vertical gradients in GradientFill() ([[Thomas Weidenmueller]])
 
*Use GradientFill() for gradient captions ([[Thomas Weidenmueller]])
 
*Basic implementation of filling gradient triangles in GradientFill() ([[Thomas Weidenmueller]])
 
*Added EngGetCurrentProcessId() and EngGetCurrentThreadId() ([[Thomas Weidenmueller]])
 
*Fixed WindowFromPoint() to search backwards ([[Thomas Weidenmueller]])
 
*Added pool tags for better debugging ([[Thomas Weidenmueller]])
 
*Fixed WindowFromPoint() to send WM_NCHITTEST messages appropriately ([[Thomas Weidenmueller]])
 
*Fixed crashes that could be caused by the thread cleanup routine when destroying ([[Thomas Weidenmueller]])
 
*Fixed missing window dereference ([[Thomas Weidenmueller]])
 
*Don't lock the screen dc if it's NULL ([[Thomas Weidenmueller]])
 
*Don't hold more than one WM_MOUSEMOVE message at the same time in the message queue ([[Thomas Weidenmueller]])
 
*Added ability to cache gdi objects ([[Thomas Weidenmueller]])
 
*First attempt to implement SendMessageTimeout() ([[Thomas Weidenmueller]])
 
*Simplified calls to MsqPostMessage() ([[Thomas Weidenmueller]])
 
*Count all gdi handles and serialize removing gdi handles from the table. ([[Thomas Weidenmueller]])
 
*Fixed wrong rendering of clipped characters ([[Thomas Weidenmueller]])
 
*Fixed a couple of dead-locks in the region code ([[Thomas Weidenmueller]])
 
*Implemented SetWindowRgn() and added support for window regions ([[Thomas Weidenmueller]])
 
*Don't use the window region when minimized ([[Thomas Weidenmueller]])
 
*Implemented GetWindowRgn() and GetWindowRgnBox() ([[Thomas Weidenmueller]])
 
*Fixed accessing memory that has already been freed ([[Thomas Weidenmueller]])
 
*Fixed a crash caused by removing a message twice from the queue ([[Thomas Weidenmueller]])
 
*Partly ([[not working]]) implementation of TransparentBlt() ([[Thomas Weidenmueller]])
 
*Fixed NtUserGetAncestor() ([[Thomas Weidenmueller]])
 
*Implemented GetWindowInfo() ([[Thomas Weidenmueller]])
 
*Implemented GetWindowModuleFileName() ([[Thomas Weidenmueller]])
 
*Partially implemented IsHungAppWindow() ([[Thomas Weidenmueller]])
 
*Fixed a crash caused by requesting a large number of extra class space ([[Thomas Weidenmueller]])
 
*Made the DCE list thread-safe ([[Thomas Weidenmueller]])
 
*Implemented TransparentBlt() on 8bpp, 16bpp and 24bpp surfaces ([[Thomas Weidenmueller]])
 
*Fixed missing dereferences of threads ([[Thomas Weidenmueller]])
 
*Fixed clipping code in NtGdiGetPixel ([[James Pritchard]])
 
*Fix bug in NtGdiExtEscape not checking for NULL == DriverFunctions.Escape ([[Royce Mitchell III]])
 
*If nWidth or nHeight is zero, CreateBitmap returns the handle to a 1by 1-pixel ([[Royce Mitchell III]])
 
*Fix RoundRect compatibility issue ([[Royce Mitchell III and MT]])
 
*NtGdiPolygon simplification ([[Royce Mitchell III]])
 
*Performance improvement for 1bpp dib -> 1bpp dib blitting ([[Royce Mitchell III]])
 
*Change to NtGdiGetPixel to handle device DCs ([[Royce Mitchell III]])
 
*Implement SetPixelV ([[Royce Mitchell III]])
 
*Implemented event services ([[David Welch]])
 
*Added an implementation of LdrFindImageProcAddress ([[David Welch]])
 
*Return any error code from the miniport device i/o control to the display driver; fixes crash when running with ATI drivers ([[David Welch]])
 
*Fixed 8 8 bpp and 32 32 bpp StretchBlt ([[Waldo Alvarez Ca񩺡res]])
 
*Fixed IntGdiExtEscape ([[Anich Gregor]])
 
*Initialized the win32k timer as SynchronizationTimer ([[Hartmut Birr]])
 
 
 
[[ChangeLog-0.2.3]]
 
 
 
*Fixed the access to an uninitialized variable in IntCreateClass ([[Hartmut Birr]])
 
*Convert between RGBQUAD and PALETTEENTRY ([[Ge van Geldorp]])
 
*Handle RLE bottom-up dibs ([[Ge van Geldorp]])
 
*Fixed NtUserDestroyWindow to correctly destroy owned windows. Fixes bugs #342 and #350 ([[Filip Navara]])
 
*Activate window on non-client click too ([[Ge van Geldorp]])
 
*Don't activate invisible windows ([[Ge van Geldorp]])
 
*Prefer non-topmost windows when activating another window ([[Ge van Geldorp]])
 
*Call the "load default cursor" callback. Fixes bug #358 ([[Filip Navara]])
 
*Allocate memory from PagedPool instead of NonPagedPool where possible ([[Filip Navara]])
 
*Backported font initialization code with fixed memory leaks from my unfinished font handling rewrite patch ([[Filip Navara]])
 
*Don't change DC origin in NtGdiOffsetViewportOrgEx ([[Filip Navara]])
 
*Update transformation matrix in NtGdiSetViewportExtEx, NtGdiSetWindowExtEx, NtGdiSetWindowOrgEx, NtGdiOffsetWindowOrgEx ([[Filip Navara]])
 
*When creating new DC initialize the Viewport/Window extensions ([[Filip Navara]])
 
*Transform logical coordinates to device ones in NtGdiExtTextOut and NtGdiLineTo ([[Filip Navara]])
 
*Marshall WM_CREATE/WM_NCCREATE messages ([[Ge van Geldorp]])
 
*Set MaximumLength to size of allocated memory ([[Ge van Geldorp]])
 
*Update trasformation matrix in SetViewportOrgEx ([[Filip Navara]])
 
*Fixed NtUserDestroyWindow to correctly destroy owned windows. Fixes bugs #342 and #350 ([[Filip Navara]])
 
*Little GDI speed improvements ([[Thomas Weidenmueller]])
 
*Fixed missing class dereferencings and store a list of windows in the class object ([[Thomas Weidenmueller]])
 
*Eliminate unnecessary multiplications in the inner loops of *DIB_1BPP_BitBltSrcCopy_From1BPP ([[Royce Mitchel III]])
 
*Fixed unicode string copying bug in NtGdiAddFontResource ([[Filip Navara]])
 
*Prepend "\\??\" to the file name in NtGdiAddFontResource ([[Filip Navara]])
 
*Prevent unnecessary code where count is zero in NtGdiExtTextOut ([[Jason Filby]])
 
*Work on clipboard ([[Pablo Borobia]])
 
*Support for window-less hotkeys ([[Filip Navara]])
 
*Send hotkeys even if there's no focus window ([[Filip Navara]])
 
*Fixed returning uninitialized variable in NtGdiSelectVisRgn() and NtGdiExtSelectClipRgn() ([[Thomas Weidenmueller]])
 
*Prevent memory leaks if callbacks to usermode never return ([[Thomas Weidenmueller]])
 
*Disable NtGdiRealizePalette. It has a lot of bugs and really doesn't do any of the work it should do ([[Filip Navara]])
 
*Safe parameter handling for PolyPolygonRgn() and PolygonRgn() ([[Thomas Weidenmueller]])
 
*Fixed memory leak ([[Thomas Weidenmueller]])
 
*Ported CreatePolyPolygonRgn() and CreatePolygonRgn() from wine ([[Thomas Weidenmueller]])
 
*Use FASTCALL calling convention for internal routines ([[Thomas Weidenmueller]])
 
*Attempt to fix handling of timed out sending of messages to be thread-safe ([[Thomas Weidenmueller]])
 
*Fixed RegisterWindowMessage() ([[Thomas Weidenmueller]])
 
*Set proper lasterror code in RegisterWindowMessage() ([[Thomas Weidenmueller]])
 
*Fixed message timeout crash, caused by inserting dispatching messages into the wrong dispatching list ([[Thomas Weidenmueller]])
 
*Implemented DisableProcessWindowsGhosting() (window ghosting is not yet implemented though) ([[Thomas Weidenmueller]])
 
*Fixed cut & paste error in NtGdiGetDIBColorTable and NtGdiSetDIBColorTable ([[Filip Navara]])
 
*Fixed implementation of DIB_MapPaletteColors. It shoud take palette from DC and the index array is of type PUSHORT, not PULONG ([[Filip Navara]])
 
*Eng memory test ([[Jason Filby]])
 
*Replaced UnsafeIntCreateRectRgnIndirect() and UnsafeIntUnionRectWithRgn() with macros to directly call the appropriate function ([[Thomas Weidenmueller]])
 
*Fixed dereferencing bug ([[Thomas Weidenmueller]])
 
*Fixed missing dereferencing of threads in PostThreadMessage() ([[Thomas Weidenmueller]])
 
*Window Class handling fixes ([[Filip Navara]])
 
*Don't use object that's already unlocked ([[Filip Navara]])
 
*Fixed implementation of NtGdiGetNearestColor ([[Filip Navara]])
 
*Changed cursors/icons to use the window station handle table ([[Thomas Weidenmueller]])
 
*Implement complex clipping for StretchBlt ([[Ge van Geldorp]])
 
*Only split update region into client and non-client parts if there actually is something to split ([[Ge van Geldorp]])
 
*New implementation of GetDIBColorTable and SetDIBColorTable ([[Filip Navara]])
 
*Use NtGdiBitBlt in NtGdiStretchDIBits if source and destination dimensions are equal ([[Filip Navara]])
 
*Don't modify Msg's pt for mouse messages. It's supposed to be always in screen coordinates, not it client coordinates ([[Filip Navara]])
 
*Check for the WS_CLIPSIBLINGS flag on the correct window ([[Filip Navara]])
 
*Modify DPRINTs to print window styles in hexadecimal notation ([[Filip Navara]])
 
*Fix ExtSelectClipRgn and some other clipping functions ([[Filip Navara]])
 
*NtGdiCreateRectRgn should accept negative width and height. It's supposed to be handled just like in NtGdiSetRectRgn ([[Filip Navara]])
 
*Don't pass garbage to RtlQueryAtomInAtomTable ([[Filip Navara]])
 
*Force recalulation size of menu items when new item is added ([[Filip Navara]])
 
*Make MDI injected icons working ([[Filip Navara]])
 
*Minor corrections to menu code size handling ([[Filip Navara]])
 
*Make WinPosSearchChildren more readable ([[Filip Navara]])
 
*Allow caller to continue after NtUserOpenClipboard() ([[Ge van Geldorp]])
 
*Fix scrollbar controls ([[Ge van Geldorp]])
 
*GetWindowInfo() doesn't check the cbSize parameter ([[Thomas Weidenmueller]])
 
*Regression-test enable win32k ([[Casper Hornstrup]])
 
*Use a common header for most files in win32k to make use of precompiled headers ([[Thomas Weidenmueller]])
 
*Properly handle HTTRANSPARENT hittest with mouse messages ([[Thomas Weidenmueller]])
 
*Rewrote NtUserBuildHwndList() ([[Thomas Weidenmueller]])
 
*Fixed GetThreadDesktop() (not fully working yet because it requires a ObFindHandleForObject() implementation in case the requested thread doesn't belong to the calling process) ([[Thomas Weidenmueller]])
 
*Assign even more styles for overlapped windows ([[Thomas Weidenmueller]])
 
*Handle WM_SETCUROR messages for the desktop window ([[Thomas Weidenmueller]])
 
*Implemented IsWindowInDestroy() ([[Thomas Weidenmueller]])
 
*Handle MENUITEMINFOW compiled with _WIN32_WINNT less than 0x0500 (MENUITEMINFOW) ([[Ge van Geldorp]])
 
*Support the WS_EX_LEFTSCROLLBAR ([[Thomas Weidenmueller]])
 
*Implemented RegisterLogonProcess(), LockWindowStation() and UnlockWindowStation() ([[Thomas Weidenmueller]])
 
*Implemented LockWindowStation() and UnlockWindowStation() ([[Thomas Weidenmueller]])
 
*Implemented AnyPopup() ([[Thomas Weidenmueller]])
 
*Fixed brush origin ([[Thomas Weidenmueller]])
 
*Use SendInput() to send mouse input data ([[Thomas Weidenmueller]])
 
*Avoid potencial access violation ([[Filip Navara]])
 
*Add ASSERT for a palette size ([[Filip Navara]])
 
*Fix mouse clipping ([[Thomas Weidenmueller]])
 
*Setup the cursor in the middle of the screen ([[Thomas Weidenmueller]])
 
*Use only LSBit for 1bpp putpixel ([[Ge van Geldorp]])
 
*Changed SetCursorPos() to use SendInput() ([[Thomas Weidenmueller]])
 
*Fixed DrawFocusRect() to use values from SPI_GETFOCUSBORDERWIDTH/HEIGHT ([[Thomas Weidenmueller]])
 
*Fixed NtGdiPtVisible() ([[Thomas Weidenmueller]])
 
*Simplified handling of palettes selected into device contexts. Now DC's w.hPalette should always point to palette object and shoudn't be NULL ([[Filip Navara]])
 
*Fixed bitfield conversion when creating Color's Mono XLATEOBJs. Fixes bug #275.
 
*Implemented keybd_event(), mouse_event(), BlockInput() and SendInput() - the server side however isn't implemented yet ([[Thomas Weidenmueller]])
 
*Don't crash if no thread desktop set ([[Thomas Weidenmueller]])
 
*Implement DDE Execute ([[Ge van Geldorp]])
 
*Return NULL only in error case ([[Ge van Geldorp]])
 
*Implemented GetCurrentObject() ([[Thomas Weidenmueller]])
 
*Implemented PtVisible() ([[Thomas Weidenmueller]])
 
*Implemented ExcludeClipRect() ([[Thomas Weidenmueller]])
 
*Implemented ExtSelectClipRgn() ([[Thomas Weidenmueller]])
 
*Implemented GetDCBrushColor(), SetDCBrushColor(), GetDCPenColor() and SetDCPenColor() ([[Thomas Weidenmueller]])
 
*Implemented hatched brushes ([[Thomas Weidenmueller]])
 
*Fixed memory leak when deleting patterned brushes ([[Thomas Weidenmueller]])
 
*Use brush origin in dib code ([[Thomas Weidenmueller]])
 
*Set proper errorcode in some functions ([[Thomas Weidenmueller]])
 
*Fixed missing window dereferences and a minor thread-safety bug ([[Thomas Weidenmueller]])
 
*Fixed some scrollbar issues ([[Thomas Weidenmueller]])
 
*Implemented InvertRgn() ([[Thomas Weidenmueller]])
 
*Fixed some error cases ([[Thomas Weidenmueller]])
 
*Proper implementation of FrameRgn() ([[Thomas Weidenmueller]])
 
*Small windowbar sizing fix for WS_EX_TOOLWINDOW ([[Thomas Weidenmueller]], Masahiro Taguchi)
 
*Move SendMessage calls out of the message queue processing code ([[Thomas Weidenmueller]])
 
*Fixed translation of coordinates calculation in different thread states ([[Thomas Weidenmueller]])
 
*Proper implementation of Set/GetWindowText/Length() ([[Thomas Weidenmueller]])
 
*Properly remove mousemove messages ([[Thomas Weidenmueller]])
 
*Post focus messages to different threads ([[Thomas Weidenmueller]])
 
*Properly free unicode string ([[Thomas Weidenmueller]])
 
*Fixed crashes caused by an invalid pointer ([[Thomas Weidenmueller]])
 
*Fixed implementation of ChildWindowFromPointEx() ([[Thomas Weidenmueller]])
 
*Fixed major bugs in the message queue ([[Thomas Weidenmueller]])
 
*Treat WM_NCMOUSEMOVE message as WM_MOUSEMOVE messages ([[Thomas Weidenmueller]])
 
*Rewrote NtUserFindWindowEx() so it works as it's supposed to ([[Thomas Weidenmueller]])
 
*Better handling of invalid strings in IntSafeCopyUnicodeString() ([[Thomas Weidenmueller]])
 
*Compile Win32k using W32API [Part II]: ([[Filip Navara]])
 
*Compensate BrushOrigin for translation ([[Ge van Geldorp]])
 
*Handle the case where no BrushOrigin is given ([[Thomas Weidenmueller]])
 
*Handle the case where no BrushOrigin is given even under EngStretchBlt and EngMaskBitBlt ([[Filip Navara]])
 
*Implement NULL module case for EngFindImageProcAddress ([[Ge van Geldorp]])
 
*Add stubs for EngFindImageProcAddress()able not present yet ([[Ge van Geldorp]])
 
 
 
[[ChangeLog-0.2.4]]
 
 
 
* 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]])
 
 
 
[[ChangeLog-0.2.5]]
 
 
 
* Many bug fixes in win32k - significant increase in stability ([[Royce Mitchell III]], [[Filip Navara]])
 
* Implementation of monitor functions ([[Gregor Anich]])
 
* GDI Handle allocation speed-up ([[Thomas Weidenmueller]])
 
* Fixed a bug that caused locking a not anymore existing message queue while dispatching a message ([[Thomas Weidenmueller]])
 
* Don't dispatch sent messages to windows during destruction ([[Thomas Weidenmueller]])
 
* Preliminary "fixed" window class lookup so classes of other processes can be found ([[Thomas Weidenmueller]])
 
* Removed some mouse cursor hacks and the ReactOS-only ENG handle table from the ENG code ([[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]])
 
 
 
[[ChangeLog-0.2.6]]
 
 
 
* Implement NtGdiDdGetDriverInfo and NtGdiDdWaitForVerticalBlank for directx. Untested yet. ([[Magnus Olsen]])
 
 
 
[[ChangeLog-0.2.7]]
 
 
 
([[Magnus Olsen]])
 
* Implemented <code>NtGdiDdCanCreateSurface</code> and <code>NtGdiDdBlt</code> for DirectX&trade; (untested)
 
* Expanded <code>StretchBitBlt</code> to all bit-per-pixel (BPP) settings (not yet fully implemented; use the code as a reference)
 
* partially implemented fullscreen in changedisplay setting&mdash;I can play winquake&trade; in fullscreen now :)
 
* Implemented <code>NtGdiGetSystemPaletteUse</code> and <code>NtGdiSetSystemPaletteUse</code> (this code has been taken from Wine)
 
* Fixed winquake color glitch bug&mdash;the text is now white instead of black ([[Magnus Olsen]])
 
* Implemented <code>NtGdiAnimatePalette</code> (partly ripped from Wine; does not animate 100% of the palette) ([[Hervé Poussineau]])
 
* Speed-optimized the bitblt ([[Magnus Olsen]], [[Gregor Anich]]), [[Alex Ionescu]]), [[Gé van Geldorp]]) (''see svn log'')
 
* Repaired GDI to handle debugging functionality ([[Filip Navara]])
 
* Implemented <code>NtGdiUnrealizedObject</code> ([[James Tabor]])
 
* Implemented <code>WH_KEYBOARD_LL</code> hook ([[Gé van Geldorp]])
 
 
 
[[ChangeLog-0.2.8]]
 
 
 
* Implement OffsetClipRgn ([[Thomas Weidenmueller]])
 
* Add generation of 8/32bpp DIB code ([[Gé van Geldorp]])
 
* Fix DIB memory leak ([[Gé van Geldorp]])
 
* Send window-bound timers to the correct message queue ([[Gé van Geldorp]])
 
* Use the pitch provided by FreeType ([[Gé van Geldorp]])
 
* SetPixel should return the new color ([[Jeffrey Morlan]])
 
* Make sure we don't hang forever when activating a window belonging to another thread ([[Gé van Geldorp]])
 
* Inform HAL about the switch to graphics mode as late as possible ([[Gé van Geldorp]])
 
* Destroy the desktop window during shutdown ([[Gé van Geldorp]])
 
* Make FindWindow case insensitive ([[Gé van Geldorp]])
 
* partial implementation of ShowWindowAsync() to activate the Explorer desktop switcher ([[Martin Fuchs]])
 
* Fix an issue in the menu code which was causing WinRAR and other applications not to load ([[Alex Ionescu]])
 
 
 
[[ChangeLog-0.2.9]]
 
 
 
* Implemented code for tile and stretch wallpapers. ([[Brandon Turner]])
 
* Fixed a bug so the wallpaper gets written to registry and stays on reboot. ([[Brandon Turner]])
 
* Implement the saving of wallpaper styles in WinSta and the registry. ([[Brandon Turner]])
 
* Broaden the truetype lock to clear up text artifacts ([[Art Yerkes]])
 
* Fix display of menus in Firefox ([[Gé van Geldorp]])
 
* Make Firefox menus actually work ([[Gé van Geldorp]])
 
* Pass correct masks when creating bitfield palettes ([[Gé van Geldorp]])
 
* Fix a bitmap upside-down problem ([[Gé van Geldorp]])
 
* Implement IntEngAlphaBlend, NtGdiAlphaBlend functions, 8, 16, 24 and 32 bpp DIB AlphaBlend functions. ([[Gregor Anich]])
 
* Implement GetMenuBarInfo ([[James Tabor]])
 
 
 
[[ChangeLog-0.3.0]]
 
 
 
* Fix BSOD in IntPrepareDriver (bug 1321) ([[Hervé Poussineau]])
 
* Fix EnumDisplayDevicesA when it convert the struct DISPLAY_DEVICE  to unicode it use ansi side of it. and that why it did fail. ([[Magnus Olsen]])
 
* Fix BSOD in NtGdiDdCreateDirectDrawObject, it is not correct fix, it is a work around, the HDC can be NULL. it prevent some bsod for my new test apps for directx ([[Magnus Olsen]])
 
* Fix  a problem with NtGdiDdDeleteDirectDrawObject, it attempted to lock object 0x8d1f9ad8 that is deleted! problem. ([[Magnus Olsen]])
 
* Fix BSOD in DD_Cleanup thanks Thomas W, Implement second check for DrvGetDrawInfo ([[Magnus Olsen]])
 
* NtGdiDdQueryDirectDrawObject do not setup wrong callback to struct members. Check for some NULL parama that can not be NULL. ([[Magnus Olsen]])
 
* part of bug 252 : checking for null and correct memmroy leak patch by j_anderw commited by ([[Magnus Olsen]])
 
* update NtUserGetMouseMovePointsEx prototype to msdn ([[Magnus Olsen]])
 
* DIB_CreateDIBSection fix do not zero out memmory if it is a null pointer it got from ExAllocatePoolWithTag ([[Magnus Olsen]])
 
* DIB_MapPaletteColors do not try write to NULL pointer if ExAllocatePoolWithTag do return a NULLL pointer. ([[Magnus Olsen]])
 
* EngSetPointerShape did not check for NULL pointer when it alloc memmory. ([[Magnus Olsen]])
 
* DRIVER_RegisterDriver did not check for NULL pointer when it alloc memory. ([[Magnus Olsen]])
 
* IntRegisterClass did not check for NULL pointer when it alloc memory. ([[Magnus Olsen]])
 
* Fix memory leak in NtUserMonitorFromRect when it return in one case. ([[Magnus Olsen]])
 
* some case from win32k can call to RtlClearAllBits with NULL pointer. and check for null pointer after RtlClearAllBits. This take care of those case for moment. ([[Magnus Olsen]])
 
* InitTimerImpl did not check for NULL pointer when it alloc memory. ([[Magnus Olsen]])
 
* NtGdiCreatePalette did not check for NULL pointer when it alloc memory. ([[Magnus Olsen]])
 
* Fix a mouse bug for hide the cursor. It is working now with my test code for ShowCursor and NtShowCursor. The code for it is not finish. and it also working now hide the mouse with EngMovePointer(SurfObj,-1,-1,NULL); and that did not work before. ([[Magnus Olsen]])
 
* Implement ShowCursor, it is a issue with quake when you moving the mouse, the mousepointer will show, when you stand still with the mouse it will not show the mousepointer. ([[Magnus Olsen]])
 
* solv the issue with mouse poiter is hide, do not show the mousepointer when you are moving the mouse. tested in winquake ([[Magnus Olsen]])
 
* ShowCursor, gott a internal count to show the mouse or not, and return that value. as msdn descripe. ([[Magnus Olsen]])
 
* Fixing a small bug for hide mouse. Save the current surface under the mouse. But do not blt the mouse pointer. It takes care of small glitch I have seen in winquake. ([[Magnus Olsen]])
 
* fix some bugs wih org with strechblt. ([[Magnus Olsen]])
 
* Correct Streachblt in windows mode, it take accunt org and offset now. ([[Magnus Olsen]])
 
* Thanks GvG for helping put to gather a new math formula that make alot of calc not needed any longer. and correct fourmla for rounding fault. I did not think of it when I rewrote the streachblt. it feal strechblt is bit fasfer agains the old one. ([[Magnus Olsen]])
 
* check return value of RtlDeleteAtomFromAtomTable ([[Johannes Anderwald]])
 
* simply, optimize, bugfix UserRegisterClass ([[Johannes Anderwald]])
 
* allow de-registration for system classes ([[Johannes Anderwald]])
 
* set ERROR_CLASS_DOES_NOT_EXIST in case of errors ([[Johannes Anderwald]])
 
* fix UserGetClassLongPtr && UserSetClassLongPtr ([[Johannes Anderwald]], [[Thomas Weidenmueller]])
 
* fix Bug 1376, patch from SuperTrax at  gmx dot de  (owner of supertrax dot de, nic.de lookup Mark Hipp)if a Window was showed normaly, GetWindowPlacement never returned a showCmd. commited by ([[Magnus Olsen]])
 
* Bug 252  commiting file desktop.c from bug 252 , the patch is from (j_anderw at sbox dot tugraz dot at) it make our win32k lile more stable commited by ([[Magnus Olsen]])
 
* Bug 1391 : patch from ([[Thomas Weidenmueller]]) for Some Ansi vs. Unicode fixes for window classes commited by ([[Magnus Olsen]])
 
* Bug 1393 : Patch from ([[Thomas Weidenmueller]]) Fix moving class objects between desktop heaps and the shared heaps commited by ([[Magnus Olsen]])
 
* fix 16 to 16 soyrce dest why the hell does th 16bitmap surface calls into this ([[Magnus Olsen]])
 
* Fix the xlate bug in 24dib correct fix more buttom showing right in firefox now ([[Magnus Olsen]])
 
* fast cleanup in dib/dib24bpp.c, Fixing a crash bug in dib32bpp.c (typo from me), xlate XO_TABLE can resive 0xffff or 0xffff or 0xffffff or 0xffffffff as color code for table, but the table is only 256 but in color&FF, That will stop firefox crash and translate the color right. ([[Magnus Olsen]])
 
* Bug : 1452  : patch from w3seek, some xlate obj fixes for indexed palettes, should fix a hack introduced in r21292 commited by ([[Magnus Olsen]])
 
* Win32k Header Rewrite ([[Alex Ionescu]])
 
* Fix flaw in win32k hardware message queue which used KMUTEX instead of KMUTANT, thus double*disabling Kernel APCs during the parsing of the queue, which would result in actually deliving hardware message callbacks with Kernel APCs disabled when going to user*mode. This was detected when my new user*mode callback rewrite added checks for this situation, and it originally caused a bugcheck. Since the message queue code is now fixed, the bugcheck has been re*enabled, hopefully no other such violations will be detected.([[Alex Ionescu]])
 
* Clear Tcb*>Win32Thread during win32 cleanup. ([[Alex Ionescu]])
 
* Allow TLS usage for 1088 TLS slots, fixes part of Bug 191. Patch by Filip Navara (navaraf@reactos.com)([[Alex Ionescu]])
 
* Remove NtGdiDeleteDC and refernces to it as it is not a real win32 API. ([[Brandon Turner]])
 
* Remove NtGdiCheckColorsInGamut and refernces to it as it is not a real win32 API. ([[Brandon Turner]])
 
* Replace NtGdiCreatePatternBrush and NtGdiCreateHatchBrush with NtGdiCreatePatternBrushInteral and NtGdiCreateHatchBrushInteral. ([[Brandon Turner]])
 
* Implement CreateHatchBrush, CreatePatternBrush ([[Brandon Turner]])
 
* Rename NtGdiGetTextExtentPoint to NtGdiGetTextExtent and correct the declaration. ([[Brandon Turner]])
 
* Implemented PS_DOT, PS_DASH and PS_INSIDEFRAME in IntGdiCreatePenIndirect ([[Christoph von Wittich]])
 
* Fixed LoadCursorIconImage - this made Thunderbird working ([[Christoph von Wittich]])
 
* Fix BSOD when executing gdi32_winetest bitmap ([[Saveliy Tretiakov]])
 
 
 
[[ChangeLog-0.3.1]]
 
* Fix BSOD in IntPrepareDriver (Bug #1321) ([[Hervé Poussineau]])
 
* New keyboard driver and layout structure implemented ([[James Tabor]])
 
* Have IntSystemParametersInfo send WM_SETTINGCHANGE when needed ([[Timo Kreuzer]])
 
* Patch from ([[Timo Kreuzer]]) for Bug #843: Removed focus from windows, workaround
 
* NtUserSetFocus accepts Null window ([[Timo Kreuzer]])
 
* Same StretchBlt code for 8, 16, 32 bpp DIBs. It does not use putpixel anymore for 8bpp and 32bpp. Minor cleanups ([[Magnus Olsen]])
 
* Last part of the new strectsblt. Remove all mul and div from the loop (speed increase). ([[Magnus Olsen]])
 
* Commit FreeType cache glyth patch by [[Royce Mitchell]]. Modified by tinus to work with trunk, final fixes made by [[Timo Kreuzer]]. Text output receives speed increase from this fix. See Bug #511 for more details. ([[Magnus Olsen]])
 
* Implemented NtUserDrawCaption, NtGdiGetPath, NtGdiPathToRegion, NtGdiFlattenPath, NtGdiCloseFigure, NtGdiStrokePath, NtGdiStrokeAndFillPath, NtGdiPolyDraw ([[Saveliy Tretiakov]])
 
* Remove hack from Aleksey in changedisplay(), which hard coded the display number. With this patch we are now extract the display number from the desktop and use it. ([[Johannes Anderwald]]) and ([[Magnus Olsen]])
 
* Patch from [[Thomas Weidenmueller]] for Bug #1507: This patch fixes more issues with NtUserFindWindowEx. (one example of bugs have been fixed with this patch is the tray icon)
 
* Fix strechblt dib16 and dib32, can be compiled with -O2 (gcc). See Bug #1520 for details ([[Magnus Olsen]])
 
* Patch from [[Thomas Weidenmueller]]: Patch to fix a couple of argument probing bugs in NtQuerySymbolicLinkObject and NtCreateSymbolicLinkObject
 
* Fix two failures from wine gdi32 test. When HDC is NULL to NtGdiCreateDIBitmap we to need create a hdc and delete the hdc when we are done. ([[Magnus Olsen]])
 
* Implement SPI_GETFLATMENU and SPI_SETFLATMENU , not fully tested ([[Magnus Olsen]])
 
* Implement SPI_GETWHEELSCROLLLINES and SPI_GETWHEELSCROLLCHARS.  Further additions to Win32k may be necessary to fully implement the two ([[Magnus Olsen]])
 
* Implement SPI_SETSCREENSAVERRUNNING, SPI_SETSCREENSAVETIMEOUT, SPI_GETSCREENSAVERRUNNING, SPI_GETSCREENSAVETIMEOUT ([[Magnus Olsen]])
 
* Clean up NtGdiDdCreateDirectDrawObject and test. Fix create hdc when it is NULL ([[Magnus Olsen]])
 
* Rewrote NtGdiDdQueryDirectDrawObject. gdientry2 now working more or less. Create surface not yet fully implemented. A few more steps before dx hal working out of the box from win32k and gdi32. Thanks to DrFred for helping debugging between ddraw.dll and gdi32.dll with his sniffer apps, Alex for GdiEntry2, W3seek, Filip, GvG for helping me understand how our win32k works and some other info. It is now possible to load a graphic driver directx hal support in ROS. But I do not know how well it works yet ([[Magnus Olsen]])
 
* Added alpha blend support for 32bpp icons with alpha channels ([[Ged Murphy]])
 
* Improve compatibility in IntCallWndProcA/W, at least mIRC.exe works with this change ([[Aleksey Bragin]])
 
* Improve classes, fix bugs IntMapDesktopView() function ([[Aleksey Bragin]])
 
* Audit NCI interface, fixing a few wrong entries ([[Aleksey Bragin]])
 

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