![]() |
|
|
![]()
|
|
| ParaPik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
GoldFinch, почитай-ка книгу "Внутреннее устройство Windows". Cheloveck, по-моему, Винда все-таки использует и другие кольца, кроме 0 и 3. Во-первых, уровни привилегий для того и были придуманы, чтобы обезопасить системный код от пользовательского. Программа на уровне 3 не может обращать и использовать сегменты кода и данных, которые более привилегированные. Таким программам запрещается на прямую работать с оборудованием(т.е. использовать команды in, out, ins, outs). Для этого служать драйвера, к функциям которых осуществляется через команду sysenter. Также осуществляется вызов и функций Винды. Те функции, которые находятся в библиотеках типа kernel.dll, и служат для обращения к привилегированным функциям. Так, например, функции GDI(GetDC, Rectangle и т.д.) работают в режиме ядра. И для того, чтобы к ним обратиться, мы и используем функции из dll-библиотек. Чтобы в этом убедиться проследите все действия через отладчик. Но есть функции, которые работают в режиме пользователя. Например, GetCurrentThread. Она возвращает псевдоуказатель на поток. И прерывания DOS тоже доступны. Только, чтобы их вызвать, надо иметь нулевой уровень привилегий, который имеют все программы под DOS, запускаемые под Виндой. Система, просто, эмулирует родную среду для приложения.
|
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
цы здесь -------------------- ![]() |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
ParaPik,
1) в винде колец 2: 0е и 3е 2) АПИ винды - в длл, это юзермод. GetProcAddress - функция апи винды, живет в kernel32.dll, не использует обращения к коду ядра 3) ВЕСЬ GDI - это юзермод.
да, управляется GDI ядром, но само GDI живет в юзермоде |
|||
|
||||
| ParaPik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
GoldFinch,
1) В dll-библиотеках, как я уже писал, есть функции, которые работают в пользовательском режиме. 2) Во-первых, в книге "Внутреннее устройство Windows" дана хорошая схема, которая показывает расположение все частей системы. Сам центр GDI, который работает с оборудованием, если есть драйвер, то через него, расположен на уровне ядра. А как ты себе представляешь на 3-ей уровне обратиться к оборудованию, не использую команды in, out. Еще раз повторяю. Dll-библиотеки - это user mode, а они, большая часть из них, обращаются к функциям kernel mode. 3) Что такое kernel objects. Это самые "простые" объекты, которые инкапсюлируют в себе элементарные(меньчайшие) компоненты системы. Например, таймеры, мьютексы, cобытия, потоки ядра. Их главная особенность в том, что, чтобы к ним обратиться, не нужны описатели(handles). При этом время зря не тратится. User objects. Это объекты, на которые уже нужны описатели, чтобы с ними могла работать посторонняя программа(следовательно, появляются некоторые задержки при работе). Эти объекты инкапсюлируют в себе несколько kernel objects. Но их саморучно, как бы ты ни хотел, изменить никто не даст, потому что сами объекты находятся на 0-ом уровне(для этого есть WinAPI). 4) Cheloveck, сейчас прочту. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
ParaPik, юзермодные дллки винды могут обращаться к чему угодно, хоть к серверу с линуксом по сети через RPC
только апи винды - это функции которые экспортируют эти юзермодные дллки, и тот пост на 80% - бред |
|||
|
||||
| ParaPik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
Если Винда находит PE-заголовок в файле, то сразу отправляет программу на 3-й уровень. И все DLL загружаются на 3-й уровень.
ВСЕ!. А раз ты считаешь это бредом, тогда Соломон с Руссиновичем - ламеры. А все, что они написали в своей книге, - фуфло. А все, что там написано, они записали со слов таких людей, как Катлер(один из разработчиков системы). В их книге все подробно описано. Куда Винда пихает, зачем пихает. P.S. Короче, прочитай их книгу. А то я смотрю, ты, GoldFinch, вообще не улавливаешь разницу между WinAPI DLL и низкоуровневым WinAPI. И еще. Ты хоть одну WinAPI функцию прогнал через отладчик? |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
ParaPik, прочитай определение понятия API и WinAPI
http://en.wikipedia.org/wiki/Application_p...mming_interface http://en.wikipedia.org/wiki/Windows_API |
|||
|
||||
| ParaPik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
Знаешь, GoldFinch, я ничего нового не узнал. Эти статьи написаны в максимально абстрагированном варианте. Т.е. в них сказано, что есть специализированный интерфейс, который позволяет приложениям выполнять определенные действия. Например, WinAPI. Но. Если говорить о реализации этого интерфейса на низком уровне, то определение можно дать такое: "API - это набор библиотек, через которые приложение общается с OS. Т.е. вызывает ее функции." А раз OS находится на 0-ом кольце, то и эти функции располагаются там же. Если и этого недостаточно. То могу предложить схему строения Windows, принятой Microsoft.
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
ParaPik, ОС не находится в 0м кольце. ядро - да. драйвера - да. но ОС находится и в 0 и в 3м кольцах.
АПИ - это интерфейс. сервисы ядра, к которым обращаются их юзермодные обертки - это реализация винды. это не интерфейс винды. юзермодные приложения обращаются к юзермодному интерфейсу винды - АПИ. драйвера обращаются к ядерному интерфейсу винды - это тоже АПИ, но АПИ для драйверов, приложения его не юзают. такого понятия в программировании нет. вы можете выдумывать и давать любые определения, например взять и назвать бит байтом, но не надо эти свои определения давать тут, взамен устоявшихся |
|||
|
||||
| ParaPik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
1) Конечно, приложения его использовать не могут, если код этих функций написан без использования sysenter.
2) Под OS я имел в виду ее ядро(неточность). Еще имеются подсистемы, которые и работают в 3-ем кольце. 3) Сервисы ядра, конечно, - реализации OS. А я разве что-то не так написал. Я написал, что программа обращается к ее функциям, чтобы не вводить новую терминологию. 4) "Если говорить о реализации этого интерфейса на низком уровне". Так вообще-то говорят. Но только здесь речь идет о его реализации в мельчайших ячейках. Когда говорят о низком уровне, то подразумевают мельчайшее строение чего-либо. Если, например, говорить о программе, то имеется в виду машинные команды. 5) Сколько ни читал, везде мое определение о WinAPI и пишут. |
|||
|
||||
| rthsobakas |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 562 Регистрация: 20.9.2007 Репутация: нет Всего: -1 |
позволю процитировать тему http://www.cracklab.ru/f/index.php?action=...&topic=9645
там кстати и про sysenter писали.
ведь смотря что понимать под приложением. Вроде как драйвера тоже разные бывают(то есть выполнятся могут в ринг 3 и 0 или я чет перепутал опять). пс. А если честно надо английский учить и говорить на нем, чтобы не портить русский. |
||||||
|
|||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |