Собственный API Windows
Тема этой статьи Википедии может не соответствовать общему правилу по известности . ( февраль 2022 г. ) |
Native API — это облегченный интерфейс прикладного программирования (API), используемый Windows NT и приложениями пользовательского режима . Этот API используется на ранних этапах процесса запуска Windows NT , когда другие компоненты и API еще недоступны. Поэтому некоторые компоненты Windows, такие как подсистема выполнения клиент-сервер (CSRSS), реализуются с использованием Native API. Native API также используется подпрограммами , например, в kernel32.dll , которые реализуют Windows API — API, на основе которого создается большинство компонентов Windows.
Большинство вызовов Native API реализованы в ntoskrnl.exe и доступны в пользовательском режиме с помощью ntdll.dll . Точка входа в ntdll.dll: LdrInitializeThunk
. Вызовы собственного API обрабатываются ядром через таблицу дескрипторов системных служб (SSDT).
Функциональные группы
[ редактировать ]Native API включает в себя множество функций. Они включают в себя функции времени выполнения C , необходимые для самого простого выполнения времени выполнения C , такие как strlen(), sprintf(), memcpy() и Floor(). Другие распространенные процедуры, такие как malloc(), printf(), scanf(), отсутствуют (первая, потому что она не определяет кучу для выделения памяти, а вторая и третья, потому что они используют консоль, доступ к которой осуществляется только через KERNEL32.DLL). Подавляющее большинство других подпрограмм Native API по соглашению имеют префикс из 2 или 3 букв, а именно:
- Nt или Zw — это системные вызовы , объявленные в ntdll.dll и ntoskrnl.exe. При вызове из ntdll.dll в пользовательском режиме эти группы практически одинаковы; они выполняют прерывание в режиме ядра и вызывают эквивалентную функцию в ntoskrnl.exe через SSDT . При вызове функций непосредственно в ntoskrnl.exe (возможно только в режиме ядра) варианты Zw обеспечивают режим ядра, а варианты Nt — нет. [1] Префикс Zw ничего не означает. [2]
- Rtl — вторая по величине группа вызовов ntdll. К ним относится (расширенная) библиотека времени выполнения C, которая включает в себя множество служебных функций, которые могут использоваться собственными приложениями, но не связаны напрямую с поддержкой ядра.
- Csr — это функции клиент-сервер, которые используются для взаимодействия с процессом подсистемы Win32, csrss.exe ( csrss означает подсистему времени выполнения клиент-сервер).
- Dbg — это функции отладки , такие как точка останова программного обеспечения .
- Ki — это вызовы из режима ядра для таких событий, как диспетчеризация APC .
- Ldr — это функции-загрузчики для обработки PE- файлов и запуска новых процессов.
- Nls для поддержки национальных языков (аналогично кодовым страницам).
- Pfx для обработки префиксов.
- Tp для обработки пула потоков.
user32.dll и gdi32.dll включают несколько других вызовов, которые выполняют прерывание в режиме ядра. Они не были частью исходного дизайна Windows NT, как можно увидеть в Windows NT 3.5 . Однако из-за проблем с производительностью оборудования того возраста было решено перевести графическую подсистему в режим ядра. Таким образом, системные вызовы в диапазоне 0x1000–0x1FFF выполняются win32k.sys (вместо ntoskrnl.exe, как это было сделано для 0–0x0FFF) и объявляются в user32.dll и gdi32.dll. Эти функции имеют префикс NtUser и NtGdi (например, NtUserLockWorkStation и NtGdiEnableEudc ).
Использование
[ редактировать ]Использование функций Native API включает, помимо прочего:
- Включение и отключение привилегий (RtlAdjustPrivilege)
- Создание удаленных потоков внутри процессов, выполняющихся в другом сеансе (RtlCreateUserThread)
- Запуск собственных приложений (RtlCreateUserProcess)
- Выполнение принудительного завершения работы (NtShutdownSystem)
- Вызов BSOD в пользовательском режиме (NtRaiseHardError)
- Отображение строки в собственном режиме (NtDisplayString)
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ NT Insider (27 августа 2003 г.). «Nt против Zw — устранение путаницы в нативном API» . ОСР онлайн . 10 (4). Ресурсы по открытым системам OSR . Проверено 16 сентября 2013 г.
- ^ Раймонд Чен (2009). «Старая новая вещь: что означает префикс «Zw»?» . Корпорация Майкрософт . Проверено 13 июня 2009 г.
Внешние ссылки
[ редактировать ]- Веб-сайт, на котором документируется большинство функций Native API.
- Внутри собственных приложений
- Внутри собственного API
- Платформа разработки собственных приложений с открытым исходным кодом
- Компиляция программ Free Pascal для собственного API
- Windows NT Native Tools — бесплатная утилита для разработки собственных приложений.
- Собственная оболочка — командная строка Windows, которая может запускаться до подсистемы Winlogon и Win32. Архивировано 11 августа 2015 г. на Wayback Machine.