Собственный API - Native API
Эта статья слишком полагается на Рекомендации к основные источники.Январь 2018) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В Собственный API легкий интерфейс прикладного программирования (API) используется Windows NT и пользовательский режим Приложения. Этот API используется на ранних этапах Процесс запуска Windows NT, когда другие компоненты и API все еще недоступны. Поэтому некоторые компоненты Windows, такие как Подсистема времени выполнения клиент / сервер (CSRSS), реализуются с использованием собственного API. Собственный API также используется подпрограммы такие как в kernel32.dll которые реализуют Windows API, API, на основе которого создается большинство компонентов Windows.
Большинство вызовов Native API реализованы в ntoskrnl.exe и доступны в пользовательском режиме ntdll.dll. В входная точка из ntdll.dll есть LdrInitializeThunk
. Вызовы собственного API обрабатываются ядро через Таблица дескрипторов системной службы (SSDT).
Функциональные группы
Собственный API включает в себя множество функций. Они включают Функции времени выполнения C которые необходимы для очень простых C выполнение во время выполнения, например strlen (), sprintf (), memcpy () и floor (). Другие распространенные процедуры, такие как malloc (), printf (), scanf (), отсутствуют (первая, потому что она не указывает куча для выделения памяти из второго и третьего, потому что они используют консоль, доступ к которой осуществляется только через KERNEL32.DLL). Подавляющее большинство других подпрограмм Native API, по соглашению, имеют префикс из двух или трех букв, а именно:
- 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).
Использует
Использование собственных функций API включает, но не ограничивается:
- Включение и отключение привилегий (RtlAdjustPrivilege)
- Создание удаленного потока внутри процессов, запущенных в другом сеансе (RtlCreateUserThread)
- Запуск собственного приложения (RtlCreateUserProcess)
- Выполнение принудительного выключения (NtShutdownSystem)
Смотрите также
Рекомендации
- ^ The NT Insider (27 августа 2003 г.). «Nt против Zw - устранение путаницы в собственном API». OSR Online. Ресурсы OSR по открытым системам. 10 (4). Получено 2013-09-16.
- ^ Раймонд Чен (2009). "Старая новая вещь: что означает префикс" Zw "?". Корпорация Майкрософт. Получено 2009-06-13.
внешняя ссылка
- Веб-сайт, который документирует большинство функций Native API
- Внутри собственных приложений
- Внутри собственного API
- Фреймворк для разработки собственных приложений с открытым исходным кодом
- Компиляция программ Free Pascal для собственного API
- Windows NT Native Tools - бесплатная утилита для разработки собственных приложений.
- Собственная оболочка - командная строка Windows, которая может запускаться до подсистемы Winlogon и Win32.