Microsoft Windows library files: Difference between revisions

Content deleted Content added
RFL890 (talk | contribs)
No edit summary
m unpiped links using script
Line 5:
}}
 
The [[Microsoft Windows]] operating system supports a form of [[shared libraries]] known as "[[Dynamic-link library|dynamic-link libraries]]", which are code libraries that can be used by multiple processes while only one copy is loaded into [[computer memory|memory]]. This article provides an overview of the core libraries that are included with every modern Windows installation, on top of which most Windows applications are built.
 
== Internal components ==
Line 18:
The HAL is loaded into kernel address space and runs in kernel mode, so routines in the HAL cannot be called directly by applications, and no user mode APIs correspond directly to HAL routines. Instead, the HAL provides services primarily to the Windows executive and kernel and to kernel mode device drivers. Although drivers for most hardware are contained in other files, commonly of file type [[.sys]], a few core drivers are compiled into '''hal.dll'''.
 
Kernel mode device drivers for devices on buses such as [[Conventional PCI|PCI]] and [[PCI Express]] directly call routines in the HAL to access [[I/O ports]] and registers of their devices. The drivers use HAL routines because different platforms may require different implementations of these operations. The HAL implements the operations appropriately for each platform, so the same driver executable file can be used on all platforms using the same [[central-processing unit|CPU]] architecture, and the driver source file can be portable across all architectures.
 
On [[x86]] systems prior to [[Windows 8]], there are several different HAL files on the installation media. The Windows installation procedure determines which ones are appropriate for the current platform and copies it to the hard drive, renaming it to '''hal.dll''' if necessary. Among the criteria for this selection are: the presence of an [[Advanced Configuration and Power Interface|ACPI]]-compatible BIOS, the presence of an [[Advanced Programmable Interrupt Controller|APIC]], and whether or not multiple processors are present and enabled. (The multiple cores of a [[multi-core CPU]], and even the "logical processors" implemented by a [[hyperthreading]] CPU, all count as "processors" for this purpose.) On [[x86-64]] and [[Itanium]] platforms there is just one possible '''hal.dll''' for each CPU architecture. On Windows 8 and later, the x86 version also only has one HAL.
 
HAL is merged (or statically linked) into ntoskrnl.exe<ref>{{cite tweet|number=1154442296391323651|user=PetrBenes|title=Did I miss something? Routines...|date=25 July 2019}}</ref> starting with version 2004 of Windows 10, and the dll only serves as a stub for backwards compatibility.
Line 45:
GDI32.DLL exports [[Graphics Device Interface|Graphics Device Interface (GDI)]] functions that perform primitive drawing functions for output to video displays and printers. It is used, for example, in the XP version of Paint. Applications call GDI functions directly to perform low-level drawing (line, rectangle, ellipse), text output, font management, and similar functions.<ref name="VSDC1" /><ref>See also, the documentation for the [[Wine (emulator)|Wine]] implementation of GDI32.DLL: [http://source.winehq.org/WineAPI/gdi32.html Wine API: gdi32.dll]</ref>
 
Initially, GDI supported 16 and 256 color [[Enhanced Graphics Adapter|EGA]]/[[VGA]] [[display cards]] and [[monochrome]] printers. The functionality has expanded over the years, and now includes support for things like [[TrueType|TrueType fonts]], [[alpha channels]], and [[multiple monitors]].<ref>{{cite book|author=Yuan, Feng|title=Windows graphics programming: Win32 GDI and DirectDraw|publisher=Prentice Hall Professional|year=2001|isbn=978-0-13-086985-2|page=[https://archive.org/details/windowsgraphicsp00yuan/page/71 71]|url=https://archive.org/details/windowsgraphicsp00yuan|url-access=registration}}</ref>
 
=== USER32.DLL ===<!-- This section is linked from [[Graphics Device Interface]] -->