Windows APIs

Win32 API

History

Prior to 64-bit Windows, the 32-bit Windows API was called the Win32 API to distinguish it from the original 16-bit Windows API in 16-bit versions of Windows.

Originally consisted of C-style functions only.

Encoding

Component Object Model (COM)

The lack of naming consistency and logical groupings of the C-style API resulted in these newer APIs.

Object Linking and Embedding (OLE)

COM initially was called OLE 2 and created to enable Microsoft Office applications to communicate and exchange data between documents.

Interface

  • Well-defined contracts with a set of logically related methods grouped under the virtual table dispatch mechanism.

  • It is possible to call these methods from many languages

COM client

Client communicate with object through interfaces.

COM server

  • Dynamic Link Library (DLL) or an executable (EXE) where the COM classes are implemented.

  • Thus component implementation can be loaded dynamically rather than being statically linked to the client.

Windows Runtime

Abbreviated WinRT.

Windows Apps

Formerly known as Metro Apps, Modern Apps, Immersive Apps, and Windows Store Apps)

Windows Internals, Part2 - Management mechanisms

Model

WinRT is built on top of COM, adding various extensions to the base COM infrastructure.

Application

Applications written in C++, C# (or other .NET languages), and JavaScript can consume WinRT APIs

.Net Framework

Implementation

It’s implemented as a COM in-process server (DLL) and uses various facilities provided by the Windows API.

Common Language Runtime

The run-time engine for .NET and includes a Just In Time (JIT) compiler that translates Common Intermediate Language (CIL) instructions to

  • the underlying hardware CPU machine language

  • a garbage collector

  • type verification

  • code access security.

.NET Framework Class Library (FCL)

A large collection of types that implement functionality typically needed by client and server applications

Reference

Windows Internals, Part 1 Windows App Development - Programming reference for the Win32 API

Last updated