С точки зрения прикладного программиста, Windows 2000 (как и любая другая операционная система) характеризуется в первую очередь тем, каким именно образом программы взаимодействуют с ней. Все приложения «общаются» с Windows 2000 через интерфейс, базирующийся на вызовах. Базирующийся на вызовах интерфейс Windows 2000 — это весьма обширный набор системных функций, которые предоставляют доступ к функциональным возможностям операционной системы. В совокупности эти функции обозначаются термином Application Programming Interface (интерфейс прикладного программирования) или сокращенно — API. API содержит несколько сотен функций, которые могут использовать ваши прикладные программы, чтобы выполнять все необходимые операции для успешного взаимодействия с операционной системой. Например, распределение памяти, вывод информации на экран, создание окна и тому подобное. Подмножество функций API под названием GDI (Graphics Device Interface — графический интерфейс устройств) является той частью Windows, которая обеспечивает поддержку графического представления независимо от типа устройства.
Существует две основных разновидности API, получивших широкое распространение: Win16 и Win32. Win16 — более старая 16-разрядная версия API, которая используется операционной системой Windows 3.1. Win32 — современная 32-разрядная версия, интерфейс которой применяется программами в Windows 2000. (Win32 используется также системами Windows 95 и Windows 98.) В целом, Win32 охватывает множество функций Win16. На самом деле в большинстве случаев функции имеют одинаковые названия и применяются аналогичным образом. Тем не менее, будучи одинаковыми по сути и назначению, эти API отличаются друг от друга в двух фундаментальных аспектах. Во-первых, Win32 поддерживает 32-разрядную прямую адресацию, тогда как Win16 поддерживает только 16-разрядную сегментированную модель памяти. Это различие приводит к тому, что Win32, как правило, использует 32-разрядные значения аргументов и возвращаемых результатов в тех случаях, в которых Win16 применяет 16-разрядные значения. Во-вторых, Win32 включает функции API, которые поддерживают основанную на потоках многозадачность, защиту и другие продвинутые функциональные возможности, недоступные в Win16. В целом же не стоит слишком беспокоиться по поводу различий. Если вы новичок в Windows-программировании, эти различия если и затронут вас, то весьма незначительно. И то только в том случае, если вы будете переносить 16-разрядный программный код на платформу Windows 2000. Тогда вам необходимо будет просто внимательно проверить все аргументы, которые будут передаваться каждой функции API.