Собственный API - Native API
Native 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 - нет. Префикс Zw ничего не означает.
- Rtl - вторая по величине группа вызовов ntdll. Они включают (расширенную) библиотеку времени выполнения C, которая включает множество служебных функций, которые могут использоваться собственными приложениями, но не связаны напрямую с поддержкой ядра.
- Csr - это клиент-серверные функции, которые используются для связи с процессом подсистемы Win32, csrss.exe ( csrss означает подсистему времени выполнения клиент / сервер).
- Dbg - это функции отладки, такие как программная точка останова .
- Ki - это вызовы из режима ядра для таких событий, как диспетчеризация APC .
- Ldr - это функции загрузчика для обработки файлов PE и запуска новых процессов.
- Nls для поддержки национальных языков (аналогично кодовым страницам).
- Pfx для обработки префиксов.
- Tp для Threadpool обработки.
user32.dll и gdi32.dll включают несколько других вызовов, которые перехватывают режим ядра. Как видно из Windows NT 3.5, они не входили в первоначальную конструкцию Windows NT . Однако из-за проблем с производительностью оборудования того времени было решено перевести графическую подсистему в режим ядра. Таким образом, системные вызовы в диапазоне 0x1000-0x1FFF удовлетворяются win32k.sys (вместо ntoskrnl.exe, как это делается для 0-0x0FFF) и объявляются в user32.dll и gdi32.dll. Эти функции имеют префикс NtUser и NtGdi (например, NtUserLockWorkStation и NtGdiEnableEudc ).
Использует
Использование собственных функций API включает, но не ограничивается:
- Включение и отключение привилегий (RtlAdjustPrivilege)
- Создание удаленного потока внутри процессов, запущенных в другом сеансе (RtlCreateUserThread)
- Запуск собственного приложения (RtlCreateUserProcess)
- Выполнение принудительного выключения (NtShutdownSystem)
Смотрите также
Рекомендации
внешние ссылки
- Веб-сайт, на котором документируется большинство функций Native API.
- Внутри собственных приложений
- Внутри собственного API
- Фреймворк для разработки собственных приложений с открытым исходным кодом
- Компиляция программ Free Pascal для собственного API
- Windows NT Native Tools - бесплатная утилита для разработки собственных приложений.
- Собственная оболочка - командная строка Windows, которая может запускаться до подсистемы Winlogon и Win32.