Difference between revisions of "Win32k.sys"
BrentNewland (talk | contribs) m |
BrentNewland (talk | contribs) m |
||
Line 136: | Line 136: | ||
* Fix bug #129 ([[Filip Navara]]) | * Fix bug #129 ([[Filip Navara]]) | ||
* Fixed bug 167 ([[Art Yerkes]]) | * Fixed bug 167 ([[Art Yerkes]]) | ||
+ | |||
+ | [[ChangeLog-0.2.2]] | ||
+ | *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]]) |
Revision as of 02:59, 5 March 2012
See Arwinss page for the alternative win32 subsystem implementation effort.
See also Win32k_design_guideline
http://en.wikipedia.org/wiki/Windows_API#Overview
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
- 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)
- 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)