API
API
[edit] Overview
The functionality provided by the Windows API can be grouped into seven categories:[1]
Base Services[2]
Provide access to the fundamental resources available to a Windows system.
Included are things like file systems, devices, processes and threads, access to the
Windows registry, and error handling. These functions reside in kernel.exe,
krnl286.exe or krnl386.exe files on 16-bit Windows, and kernel32.dll and
advapi32.dll on 32-bit Windows.
Graphics Device Interface[3]
Provide the 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.
User Interface[4]
Provides the functionality to create and manage screen windows and most basic
controls, such as buttons and scrollbars, receive mouse and keyboard input, and
other functionality associated with the GUI part of Windows. This functional unit
resides in user.exe on 16-bit Windows, and user32.dll on 32-bit Windows.
Since Windows XP versions, the basic controls reside in comctl32.dll, together
with the common controls (Common Control Library).
Common Dialog Box Library[5]
Provides applications the standard dialog boxes for opening and saving files,
choosing color and font, etc. The library resides in a file called commdlg.dll on
16-bit Windows, and comdlg32.dll on 32-bit Windows. It is grouped under the
User Interface category of the API.
Common Control Library[6]
Gives applications access to some advanced controls provided by the operating
system. These include things like status bars, progress bars, toolbars and tabs. The
library resides in a DLL file called commctrl.dll on 16-bit Windows, and
comctl32.dll on 32-bit Windows. It is grouped under the User Interface
category of the API.
Windows Shell[7][8]
Component of the Windows API allows applications to access the functionality
provided by the operating system shell, as well as change and enhance it. The
component resides in shell.dll on 16-bit Windows, and shell32.dll and later
in Windows 95 shlwapi.dll on 32-bit Windows. It is grouped under the User
Interface category of the API.
Network Services[9]
Give access to the various networking capabilities of the operating system. Its
sub-components include NetBIOS, Winsock, NetDDE, RPC and many others.
[edit] Web
The Internet Explorer web browser also exposes many APIs that are often used by
applications, and as such could be considered a part of the Windows API. Internet
Explorer has been an integrated component of the operating system since Windows 98,
and provides web related services to applications.[10] The integration has stopped with
Windows Vista. Specifically, it used to provide:
[edit] Multimedia
Microsoft has provided the DirectX set of APIs as part of every Windows installation
since Windows 95 OSR2. DirectX provides a loosely related set of multimedia and
gaming services, including:
The Windows API mostly concerns itself with the interaction between the operating
system and an application. For communication between the different Windows
applications among themselves, Microsoft has developed a series of technologies
alongside the main Windows API. This started out with Dynamic Data Exchange (DDE),
which was superseded by Object Linking and Embedding (OLE) and later by the
Component Object Model (COM).
Various wrappers were developed by Microsoft that took over some of the more low
level functions of the Windows API, and allowed applications to interact with the API in
a more abstract manner. Microsoft Foundation Class Library (MFC) wrapped Windows
API functionality in C++ classes, and thus allows a more object oriented way of
interacting with the API. The Active Template Library (ATL) is a template oriented
wrapper for COM. The Windows Template Library (WTL) was developed as an
extension to ATL, and intended as a lightweight alternative to MFC.
Also notable are some of Borland's offerings. Object Windows Library (OWL) was
released as a competing product to MFC, and offered a similar object-oriented wrapper.
Borland later deprecated it in favour of the Visual Component Library (VCL).
Most application frameworks for Windows are (at least partially) wrapping the Windows
API. Thus, the .NET Framework and Java, as well as any other programming languages
under Windows, are (or contain) Wrapper Libraries.