робочих столів і перемикатися між ними до теперішнього часу не надавалася стандартними засобами для користувача інтерфейсу Windows, хоча існують сторонні програми, що дають доступ до цієї функціональності.
вікон станціями і робочими столами вичерпуються об'єкти підсистеми користувача інтерфейсу Windows NT, яким можуть бути призначені права доступу. Решта типи об'єктів - вікна і меню - надають повний доступ будь-якому процесу, який знаходиться з ними в одній віконної станції. Тому служби Windows NT за замовчуванням запускаються в окремих віконних станціях: вони працюють з підвищеними привілеями, і можливість процесів користувача необмежено маніпулювати вікнами служб могла б привести до збоїв та/або проблем безпеки.
Програмні інтерфейси
Native API
Для прикладних програм системою Windows NT надається декілька наборів API. Основний з них - так званий «рідний» API (NT Native API), реалізований у динамічно підключається бібліотеці ntdll.dll і складається з двох частин: системні виклики ядра NT (функції з префіксами Nt і Zw, що передають виконання функцій ядраntoskrnl.exe з тими ж назвами) і функції, реалізовані в режимі користувача (з префіксом Rtl). Частина функцій другої групи використовують всередині себе системні виклики; решта цілком складаються з непривилегированного коду, і можуть викликатися не тільки з коду користувацького режиму, але і з драйверів. Крім функцій Native API, в ntdll також включені функції стандартної бібліотеки мови Сі.
Офіційна документація на Native API дуже мізерна, але співтовариствам ентузіастів вдалося методом проб і помилок зібрати достатньо великі відомості про це інтерфейсі. Зокрема, в лютому 2000 року опублікована книга Гері Неббета «Довідник з базових функцій API Windows NT/2000» (ISBN 1-57870-199-6); в 2002 році вона була переведена на російську мову (ISBN 5-8459-0238-X). Джерелом інформації про Native API може служити Windows DDK, де описані деякі функції ядра, доступні завдяки Native API, а також вивчення коду Windows (зворотна розробка) - за допомогою дизассемблирования, або використовуючи вихідні тексти Windows 2000, що стали доступними внаслідок витоку, або використовуючи вихідні тексти Windows 2003, доступні в рамках програми Windows Research Kernel.
Програми, що виконуються до завантаження підсистем, що забезпечують роботу інших API ОС Windows NT, обмежені використанням Native API. Наприклад, программаautochk, що перевіряє диски при завантаженні ОС після некоректного завершення роботи, використовує тільки Native API.
Win32 API
Найчастіше прикладними програмами для Windows NT використовується Win32 API - інтерфейс, створений на основі API ОС Windows 3.1, і дозволяє перекомпілювати існуючі програми для 16-бітових версій Windows з мінімальними змінами вихідного коду. Сумісність Win32 API і 16-бітного Windows API настільки велика, що 32-бітові і 16-бітові додатки можуть вільно обмінюватися повідомленнями, працювати з вікнами один одного і т. Д.Кроме підтримки функцій існування WindowsAPI, в Win32 APIбил такжк доданий ряд нових можливостей , у тому числі підтримка консольних програм, багатопоточності, і об'єктів синхронізації, таких як м'ютекси і семафори. Документація на Win32 APIвходіт до складу MicrosoftPlatformSDKі доступна на вебсайті.
Бібліотеки підтримки Win32 API в основному названі так само, як системні бібліотеки Windows 3.x, з додаванням суфікса 32: це бібліотеки kernel32, advapi32, gdi32, user32, comctl32, comdlg32, shell32 і ряд інших. Функції Win32 API можуть або самостійно реалізовувати необхідну функціональність в режимі користувача, або викликати описані вище функції NativeAPI, або звертатися до підсистеми 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 ) приймають рядки в кодуванні UTF - 16. У Win32s і Windows 9x підтримуються тільки A-функції, тоді як в Windows NT, де всі рядки всередині ОС зберігаються виключно в UTF - 16, кожна A-функція просто перетворює свої строкові параметри в Юнікод і викликає W-версію тієї ж функції. У поставля...