Jump to content

Собственный API Windows

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)

См. также

[ редактировать ]
  1. ^ NT Insider (27 августа 2003 г.). «Nt против Zw — устранение путаницы в нативном API» . ОСР онлайн . 10 (4). Ресурсы по открытым системам OSR . Проверено 16 сентября 2013 г.
  2. ^ Раймонд Чен (2009). «Старая новая вещь: что означает префикс «Zw»?» . Корпорация Майкрософт . Проверено 13 июня 2009 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 664ab12d463ce076bc07ac67391c0b50__1718253600
URL1:https://arc.ask3.ru/arc/aa/66/50/664ab12d463ce076bc07ac67391c0b50.html
Заголовок, (Title) документа по адресу, URL1:
Windows Native API - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)