Windows
NT (в просторечии просто NT) — линейка операционных систем (ОС)
производства корпорации Microsoft и название первых версий ОС.
Windows
NT была разработана «с нуля», развивалась отдельно от других ОС
семейства Windows (Windows 3.x и Windows 9x) и, в отличие от них,
позиционировалась как надёжное решение для рабочих станций (Windows NT
Workstation) и серверов (Windows NT Server). Windows NT дала начало
семейству операционных систем, в которое входят Windows 2000, Windows
XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7. Win32 API
Чаще
всего прикладными программами для Windows NT используется Win32 API —
интерфейс, созданный на основе API ОС Windows 3.1, и позволяющий
перекомпилировать существующие программы для 16-битных версий Windows с
минимальными изменениями исходного кода. Совместимость Win32 API и
16-битного Windows API настолько велика, что 32-битные и 16-битные
приложения могут свободно обмениваться сообщениями, работать с окнами
друг друга и т. д. Кроме поддержки функций существовавшего Windows API,
в Win32 API был также добавлен ряд новых возможностей, в том числе
поддержка консольных программ, многопоточности, и объектов
синхронизации, таких как мутексы и семафоры. Документация на Win32 API
входит в состав Microsoft Platform SDK (англ.) и доступна на веб-сайте. Библиотеки
поддержки Win32 API в основном названы так же, как системные библиотеки
Windows 3.x, с добавлением суффикса 32: это библиотеки kernel32,
advapi32, gdi32, user32, comctl32, comdlg32, shell32 и ряд других.
Функции Win32 API могут либо самостоятельно реализовывать требуемую
функциональность в пользовательском режиме, либо вызывать описанные
выше функции Native API, либо обращаться к подсистеме csrss посредством
механизма LPC (англ.), либо осуществлять системный вызов в библиотеку
win32k, реализующую необходимую для Win32 API поддержку в режиме ядра.
Четыре перечисленных варианта могут также комбинироваться в любом
сочетании: например, функция Win32 API WriteFile обращается к функции
Native API NtWriteFile для записи в дисковый файл, и вызывает
соответствующую функцию csrss для вывода в консоль.
Поддержка
Win32 API включена в семейство ОС Windows 9x; кроме того, она может
быть добавлена в Windows 3.1x установкой пакета Win32s. Для облегчения
переноса существующих Windows-приложений, использующих для
представления строк MBCS-кодировки, все функции Win32 API, принимающие
параметрами строки, были созданы в двух версиях: функции с суффиксом A
(ANSI) принимают MBCS-строки, а функции с суффиксом W (wide) принимают
строки в кодировке Unicode. В Win32s и Windows 9x поддерживаются только
A-функции, тогда как в Windows NT, где все строки внутри ОС хранятся
исключительно в Юникоде, каждая A-фунция просто преобразует свои
строковые параметры в Юникод и вызывает W-версию той же функции. Когда
имя функции в исходном тексте программы указано без суффикса,
использование A- либо W-версии этой функции определяется опциями
компиляции. При этом важно отметить, что большинство новых функций,
появившихся в Windows 2000 или более поздних ОС семейства Windows NT,
существуют только в Unicode-версии, потому что задача обеспечения
совместимости со старыми программами и с ОС Windows 9x уже не стоит так
остро, как раньше. |