ються H-файлах бібліотеки також визначено імена функцій без суфікса, і використання A- або W-версії функцій визначається опціями компіляції, а в модулях Delphi до 2010 версії, наприклад, вони жорстко зав'язані на варіанти з суфіксом A. При цьому важливо відзначити, що більшість нових функцій, що з'явилися в Windows 2000 або пізніших ОС сімейства Windows NT, існують тільки в Unicode-версії, тому що завдання забезпечення сумісності зі старими програмами і з ОС Windows 9x вже не стоїть так гостро, як раніше.
POSIX і OS/2
На відміну від більшості вільних Unix-подібних ОС, Windows NT сертифікована інститутом NIST на сумісність зі стандартом POSIX.1, і навіть з більш суворим стандартом FIPS 151-2. Бібліотекою psxdllекспортіруются стандартні функції PISIX, а також деякі функції NativeAPI, що не мають аналогів в POSIX. Усередині цих функцій використовуються як NativeAPI, так і LPC-виклики в підсистему psxss, що є звичайним Wind32-процесом.
Для виконання 16-бітних програм, написаних для OS/2 1.x, до складу Windows NT включені дві системних бібліотеки OS/2 (doscalls і netapi) і консольна програма-емулятор os2, яка завантажує і використовує допомогою LPC-викликів подсістемиos2srv і os2ss. Решта системні бмбліотекі OS/2, крім двох названих (kbdcalls, mailslot, moncalls, nampipes, quecalls, viocallsі ще десяток), що не зберігаються як окремі файли, в емуліруются.Программи, написані для OS/2 2.0 і вище, а також віконні програми і програми, безпосередньо працюють з пристроями комп'ютера, у тому числі драйвери, системою Windows NT не підтримуються.
Обидві ці підсистеми, необов'язкові для роботи більшості додатків, були видалені в Windows XP і наступних випусках Windows. За допомогою маніпуляцій з реєстром їх можна було відключити і в попередніх версіях Windows NT, що рекомендувалося фахівцями з комп'ютерної безпеки з метою скорочення поверхні атаки комп'ютерної системи.
DOS і Win16
Щоб забезпечити двійкову сумісність з існуючими програмами для попередніх сімейств ОС від Microsoft, в Windows NT була додана програма-емулятор ntvdm, що реалізує VDM (віртуальну DOS-машину), всередині якої може виконуватися програма для DOS. Для кожної виконуваної DOS-програми створюється власна VDM, тоді як кілька 16-бітових Windows-програм можуть виконуватися в окремих потоках усередині однієї VDM, яка в цьому випадку відіграє роль підсистеми. Для того, щоб усередині VDM можна було виконувати програми для Windows, в неї спочатку повинна бути завантажена програма wowexec, що встановлює зв'язок VDM з платформою WOW («Windows on Win32»), що дозволяє використовувати 16-бітові додатки для Windows нарівні з 32-бітними. Сама програма-емулятор ntvdm виконується всередині підсистеми Win32, що дозволяє Win32-программам звертатися до вікон DOS-програм як до звичайних консольним вікнам, а до вікон Win16-програм - як до звичайних графічним вікнам.
Ще одна технологія забезпечення двійковій сумісності, реалізована в Windows NT - це thunks, які дозволяють 32-бітовим програмам користуватися 16-бітними DLL-бібліотеками (для Windows або OS/2), і навпаки. Thunks для Win16 реалізовані в бібліотеках wow32 (32-бітові точки входу) і krnl386 (16-бітові точки входу); thunks для OS/2 - в бібліотеці doscalls (16-бітові точки входу). До 16-бітовим системним бібліотекам, включеним до складу Windows NT для використання технологією WOW, відносяться krnl386, gdi, user, commctrl, commdlg, shell та ін. Підтримка DOS-програм віртуальної DOS-машиною системи Windows NT не обмежена емуляцією реального режиму процесора x86:підтримується інтерфейс DPMI, що дозволяє DOS-програмами звертатися до розширеної пам'яті. Однак підтримка програм для DOS і Win16 в Windows NT обмежена вимогами безпеки: програми, безпосередньо працюють з пристроями комп'ютера, у тому числі драйвери, не підтримуються.
У зв'язку з апаратними обмеженнями 64-бітових платформ, підтримка VDM і WOW була виключена з 64-бітових версій Windows, запуск 16-бітних програм засобами системи на них неможливий, але можливе використання емуляторів, таких як DOSBox. Основним API цих версій Windows NT є ??64-бітна версія Win32 API; для запуску 32-бітних програм використовується технологія WOW64, аналогічна традиційної WOW.
Апаратні платформи
Як вже було зазначено, створення версії NT для x86 турбувалися для забезпечення сумісності з OS/2, - однак для того, щоб переконатися в переносимості створюваного коду, розробка NT почалася з версій для RISC-архітектур, і тільки потім була додана підтримка x86. Спочатку розробка x86-версії Windows NT була орієнтована на процесор 80486, але до моменту випуску Windows NT 3.1 була також додана підтримка 80386. Останньою версією, підтримуючої i386, була Windows NT 3.51.
Процесор i860, для якого вела...