Difference between revisions of "Kernel32.dll"

From ReactOS Wiki
Jump to: navigation, search
m
m (Link to our article on memory management.)
 
(11 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Kernel32.dll is NOT synced with WINE, it is made by ReactOS [http://www.reactos.org/forum/viewtopic.php?f=9&t=11006#p90534 (source)]
+
{{Stub}}
  
 +
KERNEL32.DLL exposes to applications most of the Win32 base APIs, such as [[Memory Manager|memory management]], input/output (I/O) operations, process and thread creation, and synchronization functions. Many of these are implemented within KERNEL32.DLL by calling corresponding functions in the [[Wikipedia:native API|native API]], exposed by [[Ntdll.dll|NTDLL.DLL]].
  
http://en.wikipedia.org/wiki/Microsoft_Windows_library_files#Kernel32.dll
+
== Relationship with Wine ==
 +
Kernel32.dll is partially synced with [[WINE|Wine]].
  
http://en.wikipedia.org/wiki/Windows_API#Overview
+
== Code History ==
 +
{{Code history|dll/win32/kernel32}}
  
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/?view=log
+
== External links ==
 +
*[[wikipedia:Microsoft Windows library files#KERNEL32.DLL]]
 +
*[[wikipedia:Windows API#Overview]]
  
[[ChangeLog-0.0.12]]
+
[[Category:Development]]
 
+
[[Category:DLL]]
kernel32 now compiles (only as a static library)
 
 
 
[[ChangeLog-0.0.18]]
 
* Rewrote atom functions in kernel32
 
 
 
[[ChangeLog-0.0.20]]
 
* Added support for piping in kernel32 [[Hartmut Birr]]
 
 
 
[[ChangeLog-0.0.21]]
 
* Kernel32: Improved process code [[David Welch]]
 
* Kernel32: Implemented many of the ComXX exports [[Rob Dickenson]]
 
 
 
[[ChangeLog-0.1.0]]
 
* Kernel32: Improved file attribute and file time handling ([[Gé van Geldorp]])
 
* Kernel32: Added support for lauching VDM on dos image load ([[Robert Dickenson]])
 
* Kernel32: Implemented GetThreadPriotityBoost() and SetThreadPriorityBoost() ([[Eric Kohl]])
 
 
 
[[ChangeLog-0.1.1]]
 
* Kernel32: Improved process management ([[Eric Kohl]])
 
* Kernel32: Support images with native subsystem ID ([[Casper Hornstrup]])
 
 
 
[[ChangeLog-0.1.3]]  
 
* FLS support for threads ([[KJK::Hyperion]])
 
* Control Dispatcher ([[James Tabor]], [[KJK::Hyperion]], [[Hartmut Birr]])
 
 
 
[[ChangeLog-0.1.5]]
 
 
 
* Changes to DllMain for cygwin support ([[Art Yerkes]])
 
* Working edit control ([[Mark Tempel]])
 
 
 
[[ChangeLog-0.2.1]]
 
* Use return value of GetLocaleInfoW() in GetTimeFormatW() ([[Martin Fuchs]])
 
* Added language resources for english, german and french ([[Martin Fuchs]])
 
* Don't clear GetTimeFormat() flags when calling RosGetTimeFormat() ([[Martin Fuchs]])
 
* Corrected TIME_NOSECONDS handling ([[Martin Fuchs]])
 
* Minor fix in GlobalMemoryStatus to get some applications happy ([[Filip Navara]])
 
* Implemented GetUserDefaultLangID and GetUserDefaultLCID; fixes bug #108 ([[Filip Navara]])
 
* Don't wait for GUI processes to finish ([[Gé van Geldorp]])
 
* GetLocaleInfoA implemented (copied from wine) ([[Gunnar Dalsnes]])
 
* Implementation of InitializeCriticalSectionAndSpinCount and RtlInitializeCriticalSectionAndSpinCount ([[Filip Navara]])
 
* Fixed relocation problem to re-activate new error messages ([[Martin Fuchs]])
 
* Implement some profile (.ini file) functions ([[Gé van Geldorp]])
 
* Implemented Write(Private)ProfileStringA/W ([[Gé van Geldorp]])
 
* CreateFileMappingA/CreateFileMappingW: a NULL size argument for this function should result in the filesize being used ([[Gero Kuehn]])
 
* GetComputerName(Ex)?[AW] implemented ([[Art Yerkes]])
 
* Check RtlAllocateHeap() return value for 8-byte alignment ([[Gé van Geldorp]] and [[Mark Tempel]])
 
 
 
[[ChangeLog-0.2.2]]
 
*CreateFileMappingA/CreateFileMappingW: a NULL size argument for this function should result in the filesize being used ([[Gero Kuehn]])
 
*Added WINE kernel32 regression tests ([[Steven Edwards]])
 
*GetComputerName(Ex)?[AW] implemented ([[Art Yerkes]])
 
*Added waiting on console handles ([[Art Yerkes]])
 
*Support for regression tests ([[Casper Hornstrup]])
 
*Fiber switching code fixed ([[KJK::Hyperion]])
 
*Added more (in case we run on PowerPC) processor ids returned by GetSystemInfo() ([[Aleksey Bragin]])
 
*Implemented GetProcessId(), GetProcessIoCounters() ([[Thomas Weidenmueller]])
 
*Implemented SetFilePointerEx() and fixed SetFilePointer() to check if the calculated file position is negative ([[Thomas Weidenmueller]])
 
*Implemented CreateHardLink(), GetFileSizeEx(), SetFileValidData(), SetFileShortName() ([[Thomas Weidenmueller]])
 
*Updated FILE_INFORMATION_CLASS ([[Thomas Weidenmueller]])
 
*Fix pipe create flags traslation ([[Gunnar Dalsnes]])
 
 
 
[[ChangeLog-0.2.3]]
 
 
 
*RaiseException should pass the exception parameters even if the exception is non-continuable ([[Filip Navara]])
 
*Correctly initialize the startup info in WinExec ([[Filip Navara]])
 
*Add more processor information, fixes bug #321 ([[Christoph von Wittich]])
 
*Check if the temp path exist in GetTempPathW ([[Hartmut Birr]])
 
*Compile kernel32 using w32api ([[Filip Navara]])
 
*Report a failure for FindNextFile(NULL) instead of crashing ([[Filip Navara]])
 
*Fixed the execution of batch files ([[Hartmut Birr]])
 
*Simplified the converting of environment variables ([[Hartmut Birr]])
 
*Handle OF_CREATE flag of OpenFile ([[Filip Navara]])
 
*Error handling fix for GetTimeFormatA() ([[Martin Fuchs]])
 
*Return some reasonable values from GlobalMemoryStatusEx ([[Filip Navara]])
 
*Fix GlobalMemoryStatus & Ex ([[Jim Tabor]])
 
*Display module names with the stack trace on unhandled exception (debug) ([[Mike Nordell]])
 
*Ported GetBinaryType() from wine ([[Thomas Weidenmueller]])
 
*Implemented GetThreadLocale() and partly implemented SetThreadLocale() ([[Thomas Weidenmueller]])
 
*Implemented LoadModule() ([[Thomas Weidenmueller]])
 
*Cleanup of the unicode mess (im)ported from wine ([[Thomas Weidenmueller]])
 
*Fix command line handling (mostly double-quoting stuff) ([[Ge van Geldorp]])
 
*Implement tape IO functions ([[Eric Kohl]])
 
*Fix RosGetTimeFormat() ([[Kohn Emil Dan]])
 
*GetTimeFormatA() implemenetation ([[Kohn Emil Dan]])
 
 
 
[[ChangeLog-0.2.4]]
 
 
 
* More complete implementation of CharUpperA. ([[Filip Navara]])
 
* Implement ReadConsoleInputW, PeekConsoleInputW, ReadConsoleOutputW, WriteConsoleOutputW, SetConsoleIcon and GetConsoleWindow. ([[Filip Navara]])
 
* Fix Get[System/Window]Directory[AW] for Buffer == NULL case. ([[Filip Navara]])
 
* Fix return value of GetDriveType[AW]. ([[Filip Navara]])
 
* Implementation of GetCPFileNameFromRegistry, GetNlsSectionName and IsValidCodePage. ([[Filip Navara]])
 
* Partial implementation of MultiByteToWideChar and WideCharToMultiByte. ([[Filip Navara]])
 
* Fix realloc to not call HeapReAlloc for allocating new memory. ([[Filip Navara]])
 
* Remove invalid code from CreateToolhelp32Snapshot. ([[Filip Navara]])
 
* RtlReAllocateHeap shouldn't allocate memory if ptr == NULL. ([[Filip Navara]])
 
* Simplify CreateFileMapping[AW]. ([[Filip Navara]])
 
* Fix return value of GlobalReAlloc and GlobalUnlock. ([[Filip Navara]])
 
* Fix converting of UTF8 sequences in IntMultiByteToWideCharUTF8. ([[Filip Navara]])
 
* Properly set last error in WaitForSingleObjectEx. ([[Filip Navara]])
 
* Implemented GetACP() and GetOEMCP(). ([[Hartmut Birr]])
 
* Handle file names like ./somename in SearchPath() ([[Gé van Geldorp]])
 
* Don't reset LastError on success (CreateFile) ([[Gé van Geldorp]])
 
* Fix WinExec return value ([[Gé van Geldorp]])
 
* Implemented timer queue functions ([[Thomas Weidenmueller]])
 
* Implemented Get/SetProcessPriorityBoost (only the kernel32 part) ([[Thomas Weidenmueller]])
 
* Fixed copying LARGE_INTEGER structs to FILETIME structs that may cause alignment problems ([[Thomas Weidenmueller]])
 
 
 
[[ChangeLog-0.2.5]]
 
 
 
* Split up the handling if the fsd returns STATUS_NOT_IMPLEMENTED in MoveFileWithProgressW. Converted the destination name before calling NtSetInformationFile in MoveFileWithProgressW. ([[Hartmut Birr]])
 
* Used the shared user data page instead of NtQuerySystemTime to get the time. ([[Hartmut Birr]])
 
* Implemented SetDllDirectory() and GetDllDirectory() ([[Thomas Weidenmueller]])
 
* Implemented CheckRemoteDebuggerPresent(), GetThreadIOPendingFlag(), CreateMemoryResourceNotification() and QueryMemoryResourceNotification() (only kernel32 part) ([[Thomas Weidenmueller]])
 
* Made SetUnhandledExceptionFilter() thread-safe and use the default unhandled exception filter on startup ([[Thomas Weidenmueller]])
 
* Implemented undocumented GetConsoleInputExeNameA/W() and SetConsoleInputExeNameA/W() used by NT's cmd.exe ([[Thomas Weidenmueller]])
 
* Added stub for SetThreadUILanguage() to get NT's cmd.exe to load ([[Thomas Weidenmueller]])
 
* Implemented GetUserDefaultUILanguage(), WriteConsoleW(), ReadConsoleW(), FillConsoleOutputCharacterW(), WriteConsoleInputW(), ReadConsoleOutputCharacterW(), ScrollConsoleScreenBufferW(), GetProcessIdOfThread(), GetThreadId(), GetThreadSelectorEntry(), SetProcessWorkingSetSize(), GetProcessHandleCount(), GetSystemRegistryQuota(), CheckNameLegalDOS8Dot3A/W(), IsDBCSLeadByte() and IsDBCSLeadByteEx() ([[Thomas Weidenmueller]])
 
* Fixed ProcessIdToSessionId() to actually work and some minor fixes to GetHandleInformation(), SetHandleInformation(), CloseHandle() and DuplicateHandle() ([[Thomas Weidenmueller]])
 
* Implemented GetNamedPipeHandleStateA() and a few fixes for GetNamedPipeHandleStateW(), atomically increment pipe IDs to be thread-safe ([[Thomas Weidenmueller]])
 
* Create mailslots and named pipes with security information if requested ([[Thomas Weidenmueller]])
 
* Fixed return value of FindCloseChangeNotification() ([[Thomas Weidenmueller]])
 
* Implemented ToolHelp API: Heap32ListFirst(), Heap32ListNext(), Module32First(), Module32FirstW(), Module32Next(), Module32NextW(), Process32First(), Process32FirstW(), Process32Next(), Process32NextW(), Thread32First(), Thread32Next(), Toolhelp32ReadProcessMemory() and CreateToolhelp32Snapshot() ([[Thomas Weidenmueller]])
 
* Fixed memory leak in CheckNameLegalDOS8Dot3A() (free the allocated unicode string) ([[Thomas Weidenmueller]])
 
* Fixed Set/GetPriorityClass() not to call csrss and use NtSet/QueryInformationProcess() instead ([[Thomas Weidenmueller]])
 
* Implemented Job APIs: CreateJobObjectA/W(), OpenJobObjectA/W(), IsProcessInJob(), AssignProcessToJobObject(), QueryInformationJobObject(), SetInformationJobObject() and TerminateJobObject() ([[Thomas Weidenmueller]])
 
 
 
[[ChangeLog-0.2.6]]
 
 
 
* Rewrote ROS Critical Section implementation. Newer one is more complete, faster, and supports debug information. Thanks to Gunnar as well. ([[Alex Ionescu]])
 

Latest revision as of 20:33, 17 March 2019

The page Kernel32.dll 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.


KERNEL32.DLL exposes to applications most of the Win32 base APIs, such as memory management, input/output (I/O) operations, process and thread creation, and synchronization functions. Many of these are implemented within KERNEL32.DLL by calling corresponding functions in the native API, exposed by NTDLL.DLL.

Relationship with Wine

Kernel32.dll is partially synced with Wine.

Code History

Commit history (Source code can be found in: /reactos/dll/win32/kernel32)

External links