Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

WinAPI   Найти похожие ветки 

 
Fleg ©   (2007-09-25 20:37) [0]

Приветствую!
Вопрос в следующем - что такое WinAPI и какие вы книги можете посоветовать для его изучения
и еще - насколько сильно зависит изучение от используемого языка программирования(я исползую D7).


 
Dib@zol ©   (2007-09-25 20:48) [1]

http://ru.wikipedia.org/wiki/Windows_API


 
Ping   (2007-09-25 20:50) [2]

что такое WinAPI

http://ru.wikipedia.org/wiki/Windows_API

я исползую D7

Без проблем.


 
Ping   (2007-09-25 20:50) [3]

гы...


 
Fleg ©   (2007-09-25 20:57) [4]


> какие вы книги можете посоветовать для его изучения

??


 
Anatoly Podgoretsky ©   (2007-09-25 20:59) [5]

Рихтер не плох.


 
Ping   (2007-09-25 21:01) [6]

http://msdn2.microsoft.com/en-us/library/Aa383750.aspx


 
Инс ©   (2007-09-25 21:05) [7]

WinAPI - это интерфейс, функции, что с них взять. Нужно изучать не WinAPI а то, чем с помощью них можно манипулировать.


 
Инс ©   (2007-09-25 21:10) [8]


> Рихтер не плох.

Рихтер это конечно хорошо, даже очень, но он книги "по WinAPI" не пишет. К счастью...


 
Юрий Зотов ©   (2007-09-25 21:15) [9]

Саймон. Справочник по WinAPI.


 
Rouse_ ©   (2007-09-25 21:16) [10]


> Инс ©   (25.09.07 21:10) [8]
> Рихтер это конечно хорошо, даже очень, но он книги "по WinAPI"
> не пишет. К счастью...

Стесняюсь спросить, а по чем пишет?


 
Инс ©   (2007-09-25 21:24) [11]


> Стесняюсь спросить, а по чем пишет?

По системному программированию. Надеюсь не нужно объяснять разницу?


 
DVM ©   (2007-09-25 21:25) [12]

Петзольд
Рихтер
Румянцев
Ганеев


 
Rouse_ ©   (2007-09-25 21:27) [13]


> Инс ©   (25.09.07 21:24) [11]
> По системному программированию

Ух-ты... Эээ, а Шрайбер тогда о чем пишет? (Надеюсь не нужно объяснять разницу?)


 
DVM ©   (2007-09-25 21:27) [14]


> По системному программированию.

Ну описывает он именно WinAPI. Правда он не касается оконной подсистемы и GDI почти.


 
DVM ©   (2007-09-25 21:27) [15]

В дополнение к [12]

Фень Юань


 
Инс ©   (2007-09-25 21:29) [16]


> Ну описывает он именно WinAPI.

А что такое WinAPI?


 
DVM ©   (2007-09-25 21:31) [17]


> А что такое WinAPI?

Набор функций


 
tesseract ©   (2007-09-25 21:32) [18]


> А что такое WinAPI?


Windows Aplication program interface.


 
Инс ©   (2007-09-25 21:36) [19]


> [17] DVM ©   (25.09.07 21:31)

Ну, правильно. А сколько их, функций то? И для чего они нужны? Глубже, глубже копаем...


 
DVM ©   (2007-09-25 21:44) [20]


> А сколько их, функций то?

Много.


> И для чего они нужны?

Для взаимодействия программ с операционной системой в большинстве своем.


> Глубже, глубже копаем...

Глубже там NativeAPI


 
Rouse_ ©   (2007-09-25 21:44) [21]


> Ну, правильно. А сколько их, функций то? И для чего они
> нужны? Глубже, глубже копаем...

Всегда умилял востор юношей прочитавших Рихтера и сразу считающими себя системщиками...
А DDK оно видать для недоразвитых бурундуков...

Скажи мне мил человек, какие подсистемы поставляются на базе ОС Windows и ты сразу поймешь где система, а где пользовательский уровень...


 
Anatoly Podgoretsky ©   (2007-09-25 21:49) [22]

> Инс  (25.09.2007 21:36:19)  [19]

> А сколько их, функций то?

Ужас, уже давно более 10000, а еще плюс структуры, именованые константы.
Умереть можно.


 
Инс ©   (2007-09-25 21:52) [23]


> Много.

Много.


> Для взаимодействия программ с операционной системой в большинстве
> своем.

Согласен, для взаимодействия с элементами ОС. Так на чем Рихтер упор делает? На функциях или этих элементах. Я думаю, на втором, а функции - это постольку поскольку. Вот есть действительно книги, претендующие на звание учебников по системному программированию, которые по сути своей представляют собой пересказ MSDN. Их лучше не покупать.

PS: NativeAPi - это тоже API ;-) Хоть и более низкоуровневые


 
DVM ©   (2007-09-25 21:56) [24]


> Инс ©   (25.09.07 21:52) [23]

Так я эта... экзамен на знание Win32 api сдал?


 
Инс ©   (2007-09-25 21:57) [25]


> А DDK оно видать для недоразвитых бурундуков...

Причем тут DDK, страшным словом меня пугать будете? Системщик не обязательно должен кодить в kernel-mode.


> Скажи мне мил человек, какие подсистемы поставляются на
> базе ОС Windows и ты сразу поймешь где система, а где пользовательский
> уровень...

Что вы имеете в виду под словом "подсистема"? Я так понял Posix, OS/2 и Win32 или имеется в виду там всякие подсистемы ввода-вывода и т.д?


 
Rouse_ ©   (2007-09-25 21:58) [26]

Рихтер разьясняет тонкости работы Win32 подсистемы, тот-же POSIX Рихтер не затрагивает. Ну а системный уровнь лежит ниже :)
Надо бы Вам тщательней проштудировать доступные материалы :)


 
Rouse_ ©   (2007-09-25 21:59) [27]


> Системщик не обязательно должен кодить в kernel-mode.

Эээ а что тогда в Вашем понятии есть "системщик"? :)))


 
DVM ©   (2007-09-25 22:02) [28]

Рихтер описывает работу с процессами, потоками, MMF, памятью, dll, окнами, Unicode в книге Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows. Если это не WinApi, то я папа римский.


 
Инс ©   (2007-09-25 22:06) [29]


> Эээ а что тогда в Вашем понятии есть "системщик"? :)))

У нас с вами разные понятия термина "системное программирование". Можно работать с элементами ядра, и в само ядро не залазить. Системное программирование - это взаимодействие с элементами системы.


 
DVM ©   (2007-09-25 22:07) [30]


> Системное программирование - это взаимодействие с элементами
> системы.

Любая программа взаимодействует с элементами системы. Причем почти со всеми.


 
Инс ©   (2007-09-25 22:10) [31]


> Любая программа взаимодействует с элементами системы. Причем
> почти со всеми.

Точно также я могу сказать "любая программа часть времени проводит в kernel-mode". Хотелось бы тогда услышать ваше определение.


 
Инс ©   (2007-09-25 22:13) [32]

Хорошо, я подкорректирую свое определение: системное программирование подразумевает воздействие на систему путем манипуляции предоставляемой ею объектов и ресурсов.


 
DVM ©   (2007-09-25 22:14) [33]


> Хотелось бы тогда услышать ваше определение.

Определение чего? Системного программирования?


 
Инс ©   (2007-09-25 22:14) [34]


> Системного программирования?

Да.


 
DVM ©   (2007-09-25 22:21) [35]


> Инс ©   (25.09.07 22:14) [34]

Честно говоря я затрудняюсь с точным определением. Я бы сказал так, что системное программирование - это расширение или изменение возможностей самой ОС. Например, написание драйверов.


 
Rouse_ ©   (2007-09-25 22:24) [36]


> Инс ©   (25.09.07 22:13) [32]
> Хорошо, я подкорректирую свое определение: системное программирование
> подразумевает воздействие на систему путем манипуляции предоставляемой
> ею объектов и ресурсов.

И вообще на снимке параплан - на этой штуке в отличии от парашюта пилот сам взлетает с земли.
Учите матчасть господа! ©


 
Инс ©   (2007-09-25 22:32) [37]


> Честно говоря я затрудняюсь с точным определением. Я бы
> сказал так, что системное программирование - это расширение
> или изменение возможностей самой ОС. Например, написание
> драйверов.

Пример: Написание серверных приложений (работающих от учетной записи Local System), взаимодействующих с клиентом через именнованые каналы, скажем, учитывающие права и привилегии пользователей - это что, прикладное программирование?


 
homm ©   (2007-09-25 22:47) [38]

> [29] Инс ©   (25.09.07 22:06)
> У нас с вами разные понятия термина "системное программирование".
> Можно работать с элементами ядра, и в само ядро не залазить.
> Системное программирование - это взаимодействие с элементами
> системы.

Хендл окна это элемент ядра? Или элемент системы? А в чем разница?


 
DVM ©   (2007-09-25 22:48) [39]


> это что, прикладное программирование?

Так как данная программа использует исключительно WinAPI и не меняет обычного поведения ОС, то да, это прикладная программа.


 
DVM ©   (2007-09-25 22:51) [40]


> Хендл окна это элемент ядра?

Хэндл это ничто. Это число и некоторого списка. А вот объект, который ему сопоставлен это ОБЪЕКТ USER


 
DVM ©   (2007-09-25 22:52) [41]

и это не объект ядра


 
Инс ©   (2007-09-25 22:59) [42]


> то да, это прикладная программа.

Странное название книги, не соответствует содержанию, не находите?
http://www.amazon.com/Windows-Programming-Addison-Wesley-Microsoft-Technology/dp/0321256190

А вот немного странный план учебного курса в каком-то ВУЗе.
http://asu.gubkin.ru/staff/dl/sysprogschedule.html

Дальше спорить не вижу смысла, конструктивного спора не получится.


 
DVM ©   (2007-09-25 23:01) [43]


> конструктивного спора не получится.

здесь вообще конструктивных споров не бывает


 
Инс ©   (2007-09-25 23:07) [44]


> здесь вообще конструктивных споров не бывает

Мне вас очень жаль...


 
DVM ©   (2007-09-25 23:13) [45]


> Мне вас очень жаль...

простите..., не нас а вас...


 
Anatoly Podgoretsky ©   (2007-09-25 23:25) [46]

> DVM  (25.09.2007 23:13:45)  [45]

330, каждому.


 
Petr V. Abramov ©   (2007-09-25 23:31) [47]

shell_notify_icon челу нужно :)
> Fleg ©   (25.09.07 20:37)  
без обид :)


 
Anatoly Podgoretsky ©   (2007-09-25 23:39) [48]

> Petr V. Abramov  (25.09.2007 23:31:47)  [47]

Что бы запуздырить?


 
Германн ©   (2007-09-26 00:27) [49]


> что такое WinAPI ?

Действительно непонятно. Win - понятно. AP - тоже понятно. Но вот что означает I ???
:-)


 
Zeqfreed ©   (2007-09-26 00:28) [50]

> Германн ©   (26.09.07 00:27) [49]

Interactive, разумеется.


 
Anatoly Podgoretsky ©   (2007-09-26 00:37) [51]

> Германн  (26.09.2007 00:27:49)  [49]

Интерфейс


 
Германн ©   (2007-09-26 00:38) [52]


> Zeqfreed ©   (26.09.07 00:28) [50]

May be, may be. Who knows?


 
Германн ©   (2007-09-26 00:40) [53]


> Anatoly Podgoretsky ©   (26.09.07 00:37) [51]

И какой у Вас с Виндой интерфейс? Дружественный надеюсь.
:-)


 
Anatoly Podgoretsky ©   (2007-09-26 00:42) [54]

> Германн  (26.09.2007 00:40:53)  [53]

У нас договор


 
Германн ©   (2007-09-26 00:50) [55]


> Anatoly Podgoretsky ©   (26.09.07 00:42) [54]

Так я и знал! Всё уже украдено до нас!


 
Rouse_ ©   (2007-09-26 08:59) [56]


> Странное название книги, не соответствует содержанию, не
> находите?
> http://www.amazon.com/Windows-Programming-Addison-Wesley-
> Microsoft-Technology/dp/0321256190

Да хоть горшком ее назови, вот тебе ее аннотация:
"Эта книга посвящена вопросам разработки приложений с использованием интерфейса прикладного программирования операционных систем компании Microsoft"

А по второй твоей ссылке вообще промолчу по поводу названия.

ЗЫ: Сервис - это прикладной уровень. Ничего системного в нем нет.


 
KSergey ©   (2007-09-26 10:00) [57]

> Инс ©   (25.09.07 22:32) [37]
> Пример: Написание серверных приложений (работающих от учетной
> записи Local System)

Да хоть под NetworkSystem! Какая разница?

взаимодействующих с клиентом через
> именнованые каналы, скажем, учитывающие права и привилегии
> пользователей - это что, прикладное программирование?

нормальная такая прикладная аппликуха.

А что такое "учитывающие права и привилегии пользователей" - это к чему относилось?


 
Игорь Шевченко ©   (2007-09-26 10:23) [58]

Рихтер не пишет книг по системному программированию


 
Инс ©   (2007-09-26 10:35) [59]


> Rouse_ ©   (26.09.07 08:59) [56]

Вы, надеюсь, сами понимаете несерьезность своих аргументов. Термин Windows System Programming имеет место быть, к счастью, без нашего на то желания. И к DDK он никакого отношения не имеет. Да и книг подобных на самом деле миллион, вот еще пару примеров:
http://www.ozon.ru/context/detail/id/2575245/
http://www.techno.edu.ru/db/msg/16132.html

Теперь возвращаясь к первоначальному вопросу и ответу, из-за которого возник спор... Видимо все-таки нужно объяснить что такое WinAPI и почему WinAPI учить не надо и Рихтер на это и не претендует. API - это только то, что торчит наружу, только ножки от микросхем, все, что внутри, не видно. Рихтер в своей книги описывает не ножки, а сами микросхемы, для чего нужны, где и как их применять и как не применять. При этом немного даже залазит внутрь (хотя не так, как Соломон с Руссиновичем, в прочем, у них и книга носит совсем другое и более красноречивое название). Хотя допускаю, что для некоторых система - это именно WinAPI, и ламероватость не позволяет понять, что это не так. Вот для таких совет: учите, учите винапи, и никого не слушайте и будет вам щастие!


> А что такое "учитывающие права и привилегии пользователей"
> - это к чему относилось?

Системщикам этого не понять, в DDK ведь ничего про имперсонацию клиента сервером не пишут...


 
em240 ©   (2007-09-26 10:35) [60]

http://www.ozon.ru/context/detail/id/91732/
http://www.ozon.ru/context/detail/id/1261889/


 
DVM ©   (2007-09-26 10:40) [61]


>  Да и книг подобных на самом деле миллион, вот еще пару
> примеров

У Фленова тоже что ни книга то глазами хакера. Как вы думаете зачем книгам придают звучные названия? Так что это не аргумент.


 
DVM ©   (2007-09-26 10:41) [62]


> Инс ©

Вы же в споре смысла не видели, зачем продолжаете?


 
Инс ©   (2007-09-26 10:48) [63]


> Рихтер не пишет книг по системному программированию

И точка! А вместо аргументов - подпись. Бога нет, подпись - Бог. :) А по чем он пишет книги?


> Вы же в споре смысла не видели, зачем продолжаете?

А может мне это удовольствие доставляет!


 
DVM ©   (2007-09-26 10:52) [64]


> А по чем он пишет книги?

В принципе можно спросить у самого Рихтера. Вроде тут с форума кто-то писал ему как-то. Он ответил.


 
Rouse_ ©   (2007-09-26 10:59) [65]


> Инс ©   (26.09.07 10:35) [59]

Судя по твоим словам, положив кнопку на форму я произвел такие кардинальные изменения в системе что могу себя смело считать ядреным системщиком. Я же затонул то что торчит наружу или нет?

По поводу названия книг - да хоть горшком назови, только в печку не ставь.
У нас до сих пор нити потоком называют, а потоки тридами, и ничего - живем как-то...

Ну и ежели для тебя реализация серверов прикладного уровня, служб, работа с именованными каналами и начальные данные о работе со списками безопасности считается системным программированием, пусть так и будет. Только никогда не говори этого в компании программистов - засмеют и будут правы.


 
Sonia ©   (2007-09-26 11:16) [66]


> Rouse_ ©

Прочитав весь этот спор так и не поняла, что же такое системное программирование по твоему мнению :)


 
Инс ©   (2007-09-26 11:36) [67]


> У нас до сих пор нити потоком называют

И пусть себе называют, не в этом суть. Термин вполне прижился. Handle как только не называют... Как правильно? Насчет системного программирования я уже сказал в самом начале, у нас с вами разные понятия. Так что имеет смысл добавлять ИМХО и с моей и с вашей стороны. А насчет книг по WinAPI мое мнение непоколебимо, самый правильный ответ в данной формулировке - это [6] и [9]. Все остальные рекомендации свидетельствуют о непонимании того, что такое WinAPI.


 
Rouse_ ©   (2007-09-26 11:42) [68]


> Прочитав весь этот спор так и не поняла, что же такое системное
> программирование по твоему мнению :)

Тут все очень просто, все что врамках третьего кольца к системному программированию не имеет никакого отношения :)


> Все остальные рекомендации свидетельствуют о непонимании
> того, что такое WinAPI.

Непониманию со стороны тебя именно или всех остальных участников форума? :)


 
Инс ©   (2007-09-26 11:42) [69]


> Sonia ©   (26.09.07 11:16) [66]

Так и не поймешь, пока Свена Шрайбера не прочтешь, вот только я бы не советовал...


 
Ega23 ©   (2007-09-26 11:44) [70]


> Тут все очень просто, все что врамках третьего кольца к
> системному программированию не имеет никакого отношения  :)


Продам доступ к Кольцу Всевластия. Дорого.


 
Инс ©   (2007-09-26 11:48) [71]


> Тут все очень просто, все что врамках третьего кольца к
> системному программированию не имеет никакого отношения
> :)

Задача практически любой API-функции сводится к переходу в 0-е кольцо и выполнения некоторого действия уже в нем. API это и есть тот самый документированный слой между user и kernel. Не мне вам объяснять, что из user-mode управлять kernel-объектами можно и нужно.


> Непониманию со стороны тебя именно или всех остальных участников
> форума? :)

Не надо говорить за всех. Я пока вижу только вас да DVM. Сейчас возможно остальные "системщики" набегут, но их мнение вполне возможно будет предвзятым. Если считаете, что мое понимание термина WinAPI неверно, будьте добры поправьте.


 
Ega23 ©   (2007-09-26 11:51) [72]

Вот вы нашли, блин... Из-за семантики дурацкой спорить...
Да какая разница, что такое "системное программирование"? Может это "программирование систем"? :) Типа, канализационных...  :)


 
Игорь Шевченко ©   (2007-09-26 11:52) [73]

Инс ©   (26.09.07 11:48) [71]


> Задача практически любой API-функции сводится к переходу
> в 0-е кольцо и выполнения некоторого действия уже в нем.
>


Задача практически любого прикладного приложения сводится к вызову API-функций, которые переходят в 0 кольцо и (далее по тексту).
Однако я не считаю себя вправе ставить знак равенства между прикладным программированием и системным, нес па ?


 
Инс ©   (2007-09-26 11:53) [74]


> Задача практически любой API-функции сводится к переходу
> в 0-е кольцо и выполнения некоторого действия уже в нем

Даже не так. Задача практически любой API-функции сводится к переходу
> в 0-е кольцо и вызову функции системы, которая уже будет выполнять определенные действия в рамках ядра. Правда это упрощенно, между Win32 API и ядром лежит еще слой NativeAPI.


 
Инс ©   (2007-09-26 11:59) [75]


> Игорь Шевченко ©   (26.09.07 11:52) [73]

В вашей формулировке системных программистов на Delphi нет и быть не может.


 
palva ©   (2007-09-26 12:08) [76]


> Может это "программирование систем"? :) Типа, канализационных.
> ..  :)

Вот на ВМК МГУ, например есть кафедра системного программирования. Когда я там учился она занималась вопросами разработки операционных систем. Если сейчас посмотреть названия спецкурсов, которые там читаются,
http://www.sp.cs.msu.ru/speccourse/
то вспоминаешь, что СУБД тоже содержит слово Система, поэтому разработка СУБД тоже вроде бы системное программирование. Там же есть вещи посвященные компиляторам, хотя на ВМК есть специальная кафедра Алгоязыков. Тогда такой вопрос: а написание компилятора или интерпретатора это системное программирование? Ведь вроде бы компилятор - не система.


 
DVM ©   (2007-09-26 12:17) [77]


> поэтому разработка СУБД тоже вроде бы системное программирование.


> а написание компилятора или интерпретатора это системное
> программирование?

А еще слово "системный" можно трактовать как регулярный, последовательный, методичный поэтому все кто время от времени программирует - это все сплошь законченные системные программисты.


 
Rouse_ ©   (2007-09-26 12:20) [78]


> В вашей формулировке системных программистов на Delphi нет
> и быть не может.

Истину глаголишь :)


 
Игорь Шевченко ©   (2007-09-26 12:20) [79]


> В вашей формулировке системных программистов на Delphi нет
> и быть не может.


Прежде чем обсуждать формулировки, не лучше ли договориться о терминологии ?


 
Игорь Шевченко ©   (2007-09-26 12:21) [80]


> Тогда такой вопрос: а написание компилятора или интерпретатора
> это системное программирование? Ведь вроде бы компилятор
> - не система.


До сих пор было системным


 
Инс ©   (2007-09-26 12:23) [81]


> Прежде чем обсуждать формулировки, не лучше ли договориться
> о терминологии ?

Лучше. Говорите.


 
Игорь Шевченко ©   (2007-09-26 12:27) [82]

Инс ©   (26.09.07 12:23) [81]


> Лучше. Говорите.


Не я начал вводить термины, не мне и начинать их объяснять, нес па ?


 
Инс ©   (2007-09-26 12:29) [83]


> Игорь Шевченко ©   (26.09.07 12:27) [82]

Какие термины в моем понимании хотите услышать?


 
Sonia ©   (2007-09-26 12:48) [84]


> Так и не поймешь, пока Свена Шрайбера не прочтешь, вот только
> я бы не советовал...

А зачем его читать? вот на Вики есть определение по-русски :)

результатом системного программирования является выпуск программного обеспечения, предлагающего сервисы по взаимодействию с аппаратным обеспечением (например, дефрагментация жёсткого диска)


 
Инс ©   (2007-09-26 13:06) [85]


> вот на Вики есть определение по-русски :)

LOL. А определение то какое красивое, мама не горюй... Главное в нашем деле научный подход :) Только в сообществе программистов не говори, что по Вики учишься, засмеют и будут правы ;-)


 
Sonia ©   (2007-09-26 14:08) [86]


> Только в сообществе программистов не говори, что по Вики
> учишься, засмеют и будут правы ;-)

А я и не говорю ;-)


 
Инс ©   (2007-09-26 14:35) [87]

Я тут небольшой опрос устроил в "компании программистов", о которой говорит г-н Rouse_. Вопрос звучал так: термин "системное программирование" что в себя включает?

DRON: (http://www.delphikingdom.com/asp/users.asp?ID=7323)
:))) :))) шоб я знал. Специальность у нас называлась "вычислительные системы и сети", но все использовали термин "системный программист". Так что не знаю, давали всё подряд и архитектуру процев (курсовик в стиле "сделай свой проц") и построение ОС и несколько ассемблеров и по сетям теория плюс конкретные реализации и БД было.

SLoW: (http://www.delphikingdom.com/asp/users.asp?ID=7892)
на мое имхо это нечто вроде "высшей математики" т.е. бессмысленно

Интересно бы еще спросить мнение Набережных С., вот только где его найти, конспиратор... :) В общем, и так видно, что у каждого свое системное программирование. Игорь Шевченко предлагал договориться о терминологии, договориться видимо не получится, но высказать еще раз свое мнение я могу. Постараюсь это сделать максимально понятно.
Системное программирование подразумевает операционную систему или ее части (плохое слово части, более точного подобрать не смог, иначе будут разночтения) в качестве объекта воздействия (т.е. направлено на ОС), в отличие от прикладного, которое направлено на решение прикладной задачи (реализация алгоритмов, взаимодействие с пользователем, работа с данными). Прикладное программирование естественно работает "через" систему, ее механизмы, но направлено непосредственно не на нее. И системное и прикладное программирование могут существовать даже в рамках одного проекта. Со мной вместе над одним проектом работает замечательный прикладной программист, но слово MMF хотя бы, для него уже матерное. Разница между прикладным и системным программистом в моем понимании видна очень хорошо невооруженным глазом. Но это мое ИМХО и все сказанное мной выше отталкивается от него.


 
Rouse_ ©   (2007-09-26 14:37) [88]

Еще раз говорю, в рамках третьего кольца серьезно говорить о системном программировании бессмысленно :)


 
DVM ©   (2007-09-26 14:39) [89]


> Системное программирование подразумевает операционную систему
> или ее части (плохое слово части, более точного подобрать
> не смог, иначе будут разночтения) в качестве объекта воздействия
> (т.е. направлено на ОС), в отличие от прикладного, которое
> направлено на решение прикладной задачи (реализация алгоритмов,
>  взаимодействие с пользователем, работа с данными). Прикладное
> программирование естественно работает "через" систему, ее
> механизмы, но направлено непосредственно не на нее.


ну я то же самое и говорил, но несколько другими словами:


> Я бы сказал так, что системное программирование - это расширение
> или изменение возможностей самой ОС


 
Игорь Шевченко ©   (2007-09-26 14:41) [90]


> Еще раз говорю, в рамках третьего кольца серьезно говорить
> о системном программировании бессмысленно :)


Эта...я тебе как-то писал программку, которая пайпы и майслоты перечисляет. Она прикладная ? :)


 
DVM ©   (2007-09-26 14:45) [91]


> Она прикладная ? :)

На мой взгляд прикладная. Какая разница чего она там перечисляет процессы, окна, майлслоты или принтеры.


 
Rouse_ ©   (2007-09-26 14:46) [92]

Самая что ни на есть :)
Я тоже писал программмку, которая перечисляет открытые в системе хэндлы и это тоже прикладнуха, вот когда она стала работать через драйвер, тогда пользовательсткая часть, оставшись в прикладном уровне обзавелась кодом про который можно сказать как о системном :)


 
Инс ©   (2007-09-26 14:49) [93]


> Rouse_ ©   (26.09.07 14:46) [88]

У нас с вами разное толкование термина и я не вижу никакой причины считать ваше толкование единственно верным.


 
Игорь Шевченко ©   (2007-09-26 14:49) [94]

Rouse_ ©   (26.09.07 14:46) [92]

И какую прикладную задачу она решает ?


 
DVM ©   (2007-09-26 14:50) [95]


> И какую прикладную задачу она решает ?

узнать список майлслотов :)


 
Игорь Шевченко ©   (2007-09-26 14:51) [96]

Rouse_ ©   (26.09.07 14:46) [92]

И еще - процесс SVCHOST.EXE - тоже прикладная программа ? :)


 
DVM ©   (2007-09-26 14:52) [97]


> процесс SVCHOST.EXE - тоже прикладная программа ?

это вирус :)


 
Игорь Шевченко ©   (2007-09-26 14:53) [98]

DVM ©   (26.09.07 14:50) [95]

Офигительный бизнес-процесс, да ? :)


 
DVM ©   (2007-09-26 14:53) [99]

установка ловушек или перехват API вызовов с последствиями для всех программ - это какой уровень прикладной или системный?


 
Rouse_ ©   (2007-09-26 15:10) [100]


> И какую прикладную задачу она решает ?

Иммено в моем случае сообщает причину сбоя установки обновления ПО и показывает процесс, который залочил файлы :)


 
evvcom ©   (2007-09-26 15:13) [101]


> Ega23 ©   (26.09.07 11:51) [72]
> Вот вы нашли, блин... Из-за семантики дурацкой спорить...
> Да какая разница, что такое "системное программирование"?
>  Может это "программирование систем"? :) Типа, канализационных...  :)

Не, ты не прав! Системное - это когда есть система в программировании. А когда от случая к случаю, это уже безсистемное :-)


 
Игорь Шевченко ©   (2007-09-26 15:20) [102]

Rouse_ ©   (26.09.07 15:10) [100]

Ты на досуге прочитай про прикладное программирование :)


 
Игорь Шевченко ©   (2007-09-26 15:20) [103]

Удалено модератором
Примечание: Дубль


 
Rouse_ ©   (2007-09-26 15:23) [104]


> Ты на досуге прочитай про прикладное программирование :)

Ты наверное даже ссылочку знаешь где именно читать, и где именно написано что есть такое именно это самое -  прикладное программирование, не так ли? :)


 
Игорь Шевченко ©   (2007-09-26 16:07) [105]

Rouse_ ©   (26.09.07 15:23) [104]

http://www.intuit.ru/department/pl/funcpl/15/funcpl_15.html

Если в двух словах, то системные программисты разрабатывают инструменты, а прикладные этими инструментами пользуются для решения своих задач.


 
Rouse_ ©   (2007-09-26 16:19) [106]


> Если в двух словах, то системные программисты разрабатывают
> инструменты, а прикладные этими инструментами пользуются
> для решения своих задач

Собственно я гдето утверждал обратное? :)


 
Инс ©   (2007-09-26 16:29) [107]


> Собственно я гдето утверждал обратное? :)

Вы просто определение [105] очень сильно сузили, уцепившись за ring0. Мое определение тоже не противоречит [105]. Оба наши трактования являются подмножеством вышесказанного. Опять таки просто разное толкование термина: я слово "системное" связываю именно с операционной системой, подразумевая англоязычный термин Windows System Programming.


 
Rouse_ ©   (2007-09-26 16:38) [108]

Windows System Programming... эмм, программирование в системе Windows? :)
И опять же, я остаюсь при своем мнении :) MMF и иже с ним - это не система :)


 
Alarm ©   (2007-09-26 16:40) [109]

Считаю, что Rouse_ ©   (26.09.07 16:19) [106] на все 100 прав.
Все программы пишут прикладники, а "системщики" (иногда) умело ими пользуются:)


 
Инс ©   (2007-09-26 16:41) [110]


> MMF и иже с ним - это не система :)

А Section? :)


 
Инс ©   (2007-09-26 16:59) [111]


> Windows System Programming... эмм, программирование в системе
> Windows? :)

NativeAPI - эмм, это родной программный интерфейс прикладника? :) На этот вопрос отвечать не обязательно, в отличие от прошлого.


 
Rouse_ ©   (2007-09-26 17:10) [112]


> А Section? :)

По русски...

> NativeAPI - эмм, это родной программный интерфейс прикладника?

Вообщето натив по большей своей части не документирован, так что это вообще ничей интерфейс :)


 
Инс ©   (2007-09-26 17:12) [113]


> По русски...

Что по-русски? Системщики не знают что такое Section? Я вполне понятно и недвусмысленно спросил. Если MMF - это не система, то Section это система или нет? По-русски Section будет раздел.


 
iZEN ©   (2007-09-26 17:14) [114]


> DVM ©   (25.09.07 21:31) [17]
>
>
> > А что такое WinAPI?
>
> Набор функций

Причём часто семантически-разный в разных верcиях Windows, несмотря на одинаковость названий этих функций. ;)


 
Rouse_ ©   (2007-09-26 17:16) [115]

Ты знаешь сколько трактовок Section -а существует?
WPD Section Data
PE Section
WDK Section Body
Телепатор у меня знаете-ли не резиновый :)


 
Инс ©   (2007-09-26 17:17) [116]


> Телепатор у меня знаете-ли не резиновый :)

Из контекста можно было понять. Так каков ответ на вопрос?


 
evvcom ©   (2007-09-26 17:18) [117]


> Инс ©   (26.09.07 14:49) [93]
> > Rouse_ ©   (26.09.07 14:46) [88]
> У нас с вами разное толкование термина и я не вижу никакой
> причины считать ваше толкование единственно верным.

Ты не прав. Существует всего 2 типа мнений: моё и неправильное! :-)

> DVM ©   (26.09.07 14:52) [97]
> > процесс SVCHOST.EXE - тоже прикладная программа ?
> это вирус :)

Не... Вирус через нуль называется SVCH0ST.EXE


 
Инс ©   (2007-09-26 17:20) [118]


> Ты не прав. Существует всего 2 типа мнений: моё и неправильное!
>  :-)

А это к чему было?


 
evvcom ©   (2007-09-26 17:23) [119]


> А это к чему было?

это была шутка к

> не вижу никакой причины считать ваше толкование единственно верным.

чтобы как-то обстановку разрядить. А то вы ща взорветесь или на бокс перейдете :)


 
Инс ©   (2007-09-26 17:25) [120]


> А то вы ща взорветесь или на бокс перейдете :)

Маловероятно. Это у меня стиль ведения спора такой.


 
umbra ©   (2007-09-26 17:25) [121]

API - интерфейс операциооно для программирования приложений. Так что все программисты пишущие приложения - прикладные программисты. :)


 
Rouse_ ©   (2007-09-26 17:28) [122]


> Так каков ответ на вопрос?

Реализованы КС естественно на уровне ядра... Как и 90 процентов АПИ.
Применение их в пользовательском приложении, это системное программирование?


 
Инс ©   (2007-09-26 17:30) [123]


> Реализованы КС естественно на уровне ядра...

Что такое КС?


 
Rouse_ ©   (2007-09-26 17:31) [124]

Очевидно Критические Секции


 
Игорь Шевченко ©   (2007-09-26 17:31) [125]

Один я Д"Артаньян


 
Инс ©   (2007-09-26 17:35) [126]


> Очевидно Критические Секции

Поздравляю. Ты облажался. Я о критических секциях не говорил и реализованы они не в ядре, это структуры пользовательского режима и переход в режим ядра при работе с КС осуществляется далеко не всегда. А говорил я об объекте ядра "раздел", перечитай внимательно [133]. А заодно подумай, почему я их упомянул вместе с MMF.


 
Rouse_ ©   (2007-09-26 17:37) [127]


> Поздравляю. Ты облажался.

Спасибо. Видимо мой телепатор дал сбой...
Знаешь мне лениво сейчас думать - давай ка ты обьясни мне убогому, какое очередное озарение тебе открылось в связи с MMF? :)


 
Rouse_ ©   (2007-09-26 17:39) [128]


> Я о критических секциях не говорил и реализованы они не
> в ядре

Мхат... т.е. LMD...


 
Инс ©   (2007-09-26 17:40) [129]


> Спасибо. Видимо мой телепатор дал сбой...

Думаю телепатор тут не причем.


> Знаешь мне лениво сейчас думать - давай ка ты обьясни мне
> убогому, какое очередное озарение тебе открылось в связи
> с MMF?

Зачем мне так сразу карты раскрывать? :) Я хочу сначала ответ на вопрос услышать. А для этого давайте сначала убедимся, что вы понимаете о чем вообще я спросил.


 
Инс ©   (2007-09-26 17:42) [130]


> Применение их в пользовательском приложении, это системное
> программирование?

А применение разделяемого с драйвером режима ядра объекта Section в пользовательском приложении это системное программирование?


 
DVM ©   (2007-09-26 17:43) [131]


> А говорил я об объекте ядра "раздел",

что за объект такой?
Я знаю

access token objects,
file objects,
file-mapping objects,
I/O completion port objects,
job objects,
mailslot objects,
mutex objects,
pipe objects,
process objects,
semaphore objects,
thread objects,
waitable timer objects


 
Rouse_ ©   (2007-09-26 17:44) [132]


> Зачем мне так сразу карты раскрывать?

После откровения что критическая секция реализуется не в ядре, я что-то расхотел глядеть в эти открытые карты :)
ЗЫ: а где она реализуется тогда и как ?


 
Инс ©   (2007-09-26 17:44) [133]


> DVM ©   (26.09.07 17:43) [131]

В твоем списке объект-секция есть.


 
DVM ©   (2007-09-26 17:46) [134]


> В твоем списке объект-секция есть.

Из этого списка я ничего секциями не называю. Ткни носом.


 
Инс ©   (2007-09-26 17:48) [135]


> ЗЫ: а где она реализуется тогда и как ?

Критическая секция представляет собой структуру вида
_RTL_CRITICAL_SECTION = record
   DebugInfo: PRTLCriticalSectionDebug;
   LockCount: Longint;
   RecursionCount: Longint;
   OwningThread: THandle;
   LockSemaphore: THandle;
   Reserved: DWORD;
 end;
Эта структура хранится не в системном адресном пространстве, а в адресном пространстве процесса, доступном из user-mode. Именно поэтому она не может быть совместно использована в разных процессах, только в контексте одного. Функции, работающие с КС, как правило в режим ядра даже не переходят и в этом легко самому убедиться.


 
Инс ©   (2007-09-26 17:50) [136]


> Из этого списка я ничего секциями не называю. Ткни носом.

Тыкаю. Третий. А у седьмого знаешь какое внутреннее название? MUTANT :)


 
DVM ©   (2007-09-26 17:51) [137]


> А у седьмого знаешь какое внутреннее название? MUTANT :)

Про мутанта знаю, про секции нет. Буду знать.


 
Rouse_ ©   (2007-09-26 17:59) [138]

Опана, Всю жизнь думал что цепочка InitializeCriticalSection -> RtlInitializeCriticalSection -> RtlInitializeCriticalSectionAndSpinCount -> NtCreateEvent незыблема, а оказывается от оно как. Тебе стоит в MS резюме отправить :) Ты знаешь что-то что не знаю даже разработчики :)


 
Rouse_ ©   (2007-09-26 18:01) [139]


> Инс ©   (26.09.07 17:50) [136]
> Тыкаю. Третий.

Ну я ж говорил, у нас книги называют о "системном программировании", нити потоками, FMO секциями... Очевидно скоро мой телепатор с тобой точно отключиться :)


 
Инс ©   (2007-09-26 18:55) [140]

Ничего нового вы мне не сказали.

> Опана, Всю жизнь думал что цепочка InitializeCriticalSection
> -> RtlInitializeCriticalSection -> RtlInitializeCriticalSectionAndSpinCount
> -> NtCreateEvent незыблема, а оказывается от оно как. Тебе
> стоит в MS резюме отправить :) Ты знаешь что-то что не знаю
> даже разработчики :)

Это потому, что поле LockSemaphore нужно инициализировать. А скажем EnterCriticalSection может в режим ядра и не перейти, полей структуры может оказаться достаточно для того, чтобы принять решение, что КС свободна. Чаще всего так и бывает, ткните меня носом где я сказал иначе. Тем не менее это ничего не меняет, очевидно что критическая секция это структура пользовательского режима, в отличие от семафора или события, которые являются объектами ядра.


> Ну я ж говорил, у нас книги называют о "системном программировании",
> нити потоками, FMO секциями...

Да нет, вы просто свой DDK видимо не внимательно читали. В ядре нет объекта File Mapping. Там этот объект именно так и называется. http://msdn2.microsoft.com/en-us/library/ms796304.aspx


 
Инс ©   (2007-09-26 19:02) [141]


> Очевидно скоро мой телепатор с тобой точно отключиться :)

Конечно, когда базовых знаний нет, никакой телепатор не поможет...


 
Инс ©   (2007-09-26 19:39) [142]


> Я знаю
>
> access token objects,
> file objects,
> file-mapping objects,
> I/O completion port objects,
> job objects,
> mailslot objects,
> mutex objects,
> pipe objects,
> process objects,
> semaphore objects,
> thread objects,
> waitable timer objects


Кстати, к сведению. Это далеко не все типы объектов. По крайней мере в Win2000 типов объектов 27. А канал и мэйлслот в них не входят. Это сложные объекты, состоящие по крайней мере из двух: Device и Symbolic Link. Полный перечень могу привести.


 
Rouse_ ©   (2007-09-26 20:57) [143]


> А скажем EnterCriticalSection может в режим ядра и не перейти

Изчебы, спины они для того и предназначены... Но все крутится на эвенте.
Но вообще-то фраза изначальна выглядела как "и реализованы они не  в ядре". Посему и говорю - RTFM прежде чем постить.


> очевидно что критическая секция это структура пользовательского
> режима

Очевидно это структура, созданная в ядре. Где она храниться ее описатель роли не имеет т.к. евент принадлежит именно ядру.


> Конечно, когда базовых знаний нет, никакой телепатор не
> поможет...

Ну чтож... Не буду ругаться про знания, мне всегда хватало стандартных механизмов :) А вот начиная с Device и Symbolic Link - прошу поподробнее, параллельно остановимся на типе "file objects" в рамках NT, ну ты же знаешь о чем я говорю? :)
Да ну и давайте-же вернемся к нашим баранам, т.е. к Рихтеру - пишет ли он книги о Системном программировании? :)


 
Eraser ©   (2007-09-26 21:15) [144]

не в ту сторону куда-то спор зашел, imho. Какие кольца, какие сервисы? вы о чем? когда в учебных заведениях уже были профессии "программист" или "системынй программист" этих колец и в помине не было.
по-моему самое близкое к истине определение дает википедия http://ru.wikipedia.org/wiki/Системное_программирование
т.е. системным можно назавать тот тип приложений, который нужен для обеспечения работоспособности системы, большенство системных утилит и практически все драйвера попадют под это определение. Редактор реестара, проводник, дефрагментатор, различные оптимизаторы, средства администрирования системы - это все системные утилиты. Прикладыне же программы это другое - калькулятор, блокнот, фотошоп и т.д. Думаю мысль понятна.


 
Инс ©   (2007-09-26 21:17) [145]


> Ну чтож... Не буду ругаться про знания, мне всегда хватало
> стандартных механизмов :) А вот начиная с Device и Symbolic
> Link - прошу поподробнее, параллельно остановимся на типе
> "file objects" в рамках NT, ну ты же знаешь о чем я говорю?
> :)

Да, объект файл тоже используется. Да не суть, в любом случае таких объектов ядра, как пайп или мэйлслот нет. Они состоят из других примитивов.


> Да ну и давайте-же вернемся к нашим баранам, т.е. к Рихтеру
> - пишет ли он книги о Системном программировании? :)

А разве мы уже определились с термином? На вопрос [130] ответьте, а то так спрыгнули...


 
DVM ©   (2007-09-26 21:39) [146]


> Кстати, к сведению. Это далеко не все типы объектов. По
> крайней мере в Win2000 типов объектов 27.

Возможно. Остальные мне непосредственно не попадались, да и некторые из тех что я привел крайне редко мною используются.


> А канал и мэйлслот в них не входят.

Рихтер пишет, что входят.


 
Инс ©   (2007-09-26 21:48) [147]


> Рихтер пишет, что входят.

Рихтер пишет очень упрощенно. Установи себе Object Viewer, сам увидишь, какие типы объектов существуют. А то, о чем ты говоришь - это Win32-объекты. Они уровнем выше и составляются из одного или более объектов исполнительной системы. А уже объекты исполнительной системы состоят из объектов ядра.


 
Инс ©   (2007-09-26 21:52) [148]


> Остальные мне непосредственно не попадались

И не попадутся никогда, если учить WinAPI ;-)


 
DVM ©   (2007-09-26 22:03) [149]


> И не попадутся никогда, если учить WinAPI

Чего его учить, оно не стихотворение. Его использовать надо.


 
Инс ©   (2007-09-26 22:06) [150]


> Чего его учить, оно не стихотворение. Его использовать надо.

Полностью согласен. Посмотри пост [7]


 
Инс ©   (2007-09-26 22:16) [151]


> Они уровнем выше и составляются из одного или более объектов
> исполнительной системы.

А почему так сделано, г-н Rouse_ объяснил в [21] сам того не желая :) Подсистем несколько, какой-нибудь Posix не имеет никакого отношения к Win32-объектам, зато имеет самое непосредственное отношение к исполнительной системе и тем более ядру. И на базе этих объектов строит свои ресурсы.


 
Rouse_ ©   (2007-09-27 09:01) [152]


> На вопрос [130] ответьте, а то так спрыгнули...

Прикладнуха :)
ЗЫ: Блин, надобыть уже заканчивать а то треть рабочего вре мени на отслеживание только этой ветки уходит :)


 
Инс ©   (2007-09-27 09:17) [153]


> Прикладнуха :)

Забыл обосновать и имхо забыл добавить. С тобой ведь не только я один не согласен.


> Но вообще-то фраза изначальна выглядела как "и реализованы
> они не  в ядре". Посему и говорю - RTFM прежде чем постить.

Естественно критическая секция реализована в пользовательском режиме.  Я и до сих пор это утверждаю. Это ивент в ядре, который КС использует. Я и сам могу реализовать в пользовательском приложении свой объект, работающий по аналогичному принципу. Значит по твоему утверждению я вышел за пределы юзер-мод и стал системеным программистом ;-)


> ЗЫ: Блин, надобыть уже заканчивать а то треть рабочего вре
> мени на отслеживание только этой ветки уходит :)

Аминь. Заканчивай. Жаль только ты мне так и не объяснил, почему я неправилно понимаю термин WinAPI.


 
Rouse_ ©   (2007-09-27 09:19) [154]


> почему я неправилно понимаю термин WinAPI.

Потомучто WinAPI существует только в рамках Win32 подсистемы :)


 
Игорь Шевченко ©   (2007-09-27 09:24) [155]

Хорошо жить с резиновыми пальцами.


 
Инс ©   (2007-09-27 10:03) [156]


> Потомучто WinAPI существует только в рамках Win32 подсистемы
> :)

И что? Не хотелось бы тебя огорчать, но я это понимаю. На твой коварный вопрос [21] про подсистемы я ответил вроде бы. Тем не менее это не мешает Win32API из подсистемы воздействовать на систему.


 
Rouse_ ©   (2007-09-27 10:05) [157]

POSIX тоже воздействует на систему. Я бросил кнопку на форму - тоже произошло воздействие на систему. Но это программирование в рамках подсистемы и для нее-же, а не для системы.


 
Игорь Шевченко ©   (2007-09-27 10:06) [158]


> Потомучто WinAPI существует только в рамках Win32 подсистемы
> :)


И эта подсистема гвоздями прибита к ядру и составляет с ним неразделимое целое...


 
Rouse_ ©   (2007-09-27 10:08) [159]

Лана я закончил, а то на работу времени нема со всей этой байдой :)


 
Инс ©   (2007-09-27 10:08) [160]


>  Я бросил кнопку на форму - тоже произошло воздействие на
> систему. Но это программирование в рамках подсистемы и для
> нее-же, а не для системы.

Бросить кнопку на форму - да. Это прикладнуха. Объект воздействия - это не система. Объект - это кнопка и форма. А когда объектом воздействия становятся элементы ОС - это системное программирование.


 
Игорь Шевченко ©   (2007-09-27 10:10) [161]


> А когда объектом воздействия становятся элементы ОС - это
> системное программирование.


Я тут ссылку давал на терминологию. Авторы с тобой не согласны


 
Anatoly Podgoretsky ©   (2007-09-27 10:11) [162]

> Rouse_  (27.09.2007 10:08:39)  [159]

Подожди, работа была до сих пор, теперь ты пошел развлекаться.


 
Anatoly Podgoretsky ©   (2007-09-27 10:12) [163]

> Инс  (27.09.2007 10:08:40)  [160]

Вы никогда не найдете где эти грани. Особенно если примените разум.


 
Инс ©   (2007-09-27 10:13) [164]


> Я тут ссылку давал на терминологию. Авторы с тобой не согласны

Надо будет еще почитать, написано тяжело... Но я хотя бы не выдаю свое мнение за единственное правильное, я неоднократно подчеркивал, что это мое ИМХО.


 
Anatoly Podgoretsky ©   (2007-09-27 10:19) [165]

> Инс  (27.09.2007 10:13:44)  [164]

Зачем подчеркивал, все сообщения это ИМХО, подчеркивать надо когда не ИМХО - указывать источник.


 
Инс ©   (2007-09-27 10:22) [166]


> подчеркивать надо когда не ИМХО - указывать источник.

А я приводил ссылки на книги Харта и Вильямса.


 
Anatoly Podgoretsky ©   (2007-09-27 10:25) [167]

Я не в претензии когда приводятся ссылки на первоисточник.
Речь только про
> Но я хотя бы не выдаю свое мнение за единственное правильное,
>  я неоднократно подчеркивал, что это мое ИМХО.

Если не указано, что это мнение официальное или из источника, то оно ИМХО по определению


 
Инс ©   (2007-09-27 10:28) [168]


> Если не указано, что это мнение официальное или из источника,
>  то оно ИМХО по определению

Ну да. Я с этим тоже не спорю. Просто на том, что это ИМХО я делал упор, чтобы люди понимали меня правильно.


 
Инс ©   (2007-09-27 10:45) [169]


> Вы никогда не найдете где эти грани. Особенно если примените
> разум.

Так я и грани, описанные по ссылке Игоря Шевченко в некоторых случаях не найду :)


 
Anatoly Podgoretsky ©   (2007-09-27 11:56) [170]

> Инс  (27.09.2007 10:28:48)  [168]

Делать можно, а вот требовать нельзя, это не к тебе претензия.


 
Инс ©   (2007-09-27 14:16) [171]

Кстати, если кто не заметил, г-н Rouse_ в [152] сам себе противоречит. Его вывод "прикладнуха" основывается на [21], т.е. по его словам в рамках подсистемы Win32 ни о каком системном уровне речи быть не может, так как подсистема несмотря на приставку "под" лежит на более высоком уровне абстракции, чем непосредственно система. Само по себе утверждение в достаточной степени верное, но. Я ведь не зря спросил про Section в противовес File Mapping. File Mapping - это объект подсистемы Win32, а Section - это объект системы. Объект File Mapping целиком и полностью состоит из одного единственного объекта Section. Функции CreateFileMapping и OpenFileMapping напрямую вызывают соответственно NtCreateSection и NtOpenSection. В примере [130], который я привел, я говорил об объекте секция, а не File Mapping, объекте, который не имеет никакого отношения к подсистеме Win32. Соответственно мне ничего не мешает в моем пользовательском приложении из примера [130] вызвать не Win32, а Native-функции, тем самым целиком и полностью отвязаться от подсистемы. Отвязавшись от подсистемы, (учитывая [21]) по мнению Rouse_ получится что я перейду на более низкий системный уровень. Тогда возникает вопрос, а причем тут кольца? Я при этом как и был на 3-м кольце, так на нем и останусь.
Но если бы передо мной стояла реальная задача разделение секции памяти между приложением и драйвером я бы с вероятностью 99% использовал бы Win32-функции. Просто достаточно понимать, что делают они то же самое, так как правильно заметил Игорь Шевченко, подсистема Win32 очень тесно связана с ядром. Г-н Rouse_ не видит этой связи, он это показал на примере того, что не видит связи между Win32-объектом File Mapping и объектом системы Section.


 
Rouse_ ©   (2007-09-27 14:42) [172]

Чудак, я не пользуюсь FMO при работе с драйвером. Это первое, по поводу противоречий - посмотри свои выражения о критических секциях, то они у тебя не реализуются в ядре, то все-же вызов ядерных функций происходит.
В третьих, вызвать NtCreateSection напрямую ты не сможешь, ты дернешь лишь ее хвост который тебе доступен в третьем кольце, а sysenter за тебя будет NTDLL делать. Так что ни о каком переходе "на более низкий системный уровень" речи идти не может.
Ну и в четвертых будь поаккуратнее в высказываниях...


 
Инс ©   (2007-09-27 14:54) [173]


> Чудак, я не пользуюсь FMO при работе с драйвером.

Э? Причем тут вы, я пример приводил, вы его прокомментировали.


> по поводу противоречий - посмотри свои выражения о критических
> секциях, то они у тебя не реализуются в ядре, то все-же
> вызов ядерных функций происходит.

В самом первом своем утверждении я сказал, что переход в ядро возможен, но происходит редко. Он происходит только в том случае, если без события уже не обойтись. Событие - это не критическая секция, этот объект действительно существует в ядре, в отличие от объекта пользовательского режима - КС, которая ссылается на объект ядра - событие. Я сам могу реализовать КС в пользовательском приложении, в отличие от семафора, например.


> В третьих, вызвать NtCreateSection напрямую ты не сможешь,
>  ты дернешь лишь ее хвост который тебе доступен в третьем
> кольце

И что? Я же от подсистемы отвязался! Речь ведь была именно об этом? Или уже не об этом?


> Ну и в четвертых будь поаккуратнее в высказываниях...

Если какое либо из моих высказываний задело вас лично - искренне прошу прощения, так как на личности я переходить не собирался. Я стараюсь вести спор лишь в рамках предмета обсуждения, а вот некоторые ваши высказывания были направлены напрямую на меня и я считаю их наездами. Возможно именно это причина некоторой агрессии с моей стороны.


 
Игорь Шевченко ©   (2007-09-27 14:59) [174]


> Я сам могу реализовать КС в пользовательском приложении,
>  в отличие от семафора, например.


Кто тебе мешает в пользовательском приложении реализовать семафор ?


 
Инс ©   (2007-09-27 15:04) [175]


> Кто тебе мешает в пользовательском приложении реализовать
> семафор ?

То, что семафор хранит информацию о себе в ядре, со всеми вытекающими (возможность разделения между процессами, например)... Я могу сделать лишь некоторую имитацию на основе существующих объектов ядра. А КС можно воспроизвести полностью.


 
Rouse_ ©   (2007-09-27 15:06) [176]


> Э? Причем тут вы, я пример приводил, вы его прокомментировали.

Я прокомментировал в рамках моего знания DDK. Естесвенно что ни его ни SDK на 100 процентов я знать не могу, мозги не резиновые все-же. :) Знаю только то, с чем работаю ежедневно...

> И что? Я же от подсистемы отвязался! Речь ведь была именно
> об этом? Или уже не об этом?

Эмм... вот тут не уверен, т.к. не работал с другими подсистемами. В них разве NTDLL доступен? Если да, тогда я немного расширю свое утверждение.
Скажем, в рамках третьего кольца нельзя написать код который изменит логику работы системы (в отличие от того-же простейшего драйвер-фильтра, посредством которого можно сделать многое, вплоть до эмуляции некоего устройства целиком), следственно назвать реализацию такого кода, как системного нельзя.

> а вот некоторые ваши высказывания были направлены напрямую
> на меня и я считаю их наездами. Возможно именно это причина
> некоторой агрессии с моей стороны.

Принято - приношу извинения.

> Я стараюсь вести спор лишь в рамках предмета обсуждения

К сожалению у меня сейчас действительно мало времени, т.к. предрелизный дедлайн, поэтому предлагаю пока остановиться и продолжить через пару недель :)


 
Инс ©   (2007-09-27 15:09) [177]


> Принято - приношу извинения.

Принято.


> К сожалению у меня сейчас действительно мало времени, т.
> к. предрелизный дедлайн, поэтому предлагаю пока остановиться
> и продолжить через пару недель :)

Да ладно, не в последний раз надеюсь пересекаемся.


 
имя   (2007-10-07 22:09) [178]

Удалено модератором


 
имя   (2007-10-07 22:12) [179]

Удалено модератором


 
имя   (2007-10-07 22:26) [180]

Удалено модератором



Страницы: 1 2 3 4 5 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.98 MB
Время: 0.023 c
2-1192545392
Чародей
2007-10-16 18:36
2007.11.11
Combo и Access Violation


15-1190827861
Kolan
2007-09-26 21:31
2007.11.11
MVC — спрашивали? :)


2-1192521779
Ega23
2007-10-16 12:02
2007.11.11
Как поменять дату файла?


11-1176185434
Dy1
2007-04-10 10:10
2007.11.11
не работает сохранение в jpeg


15-1191918045
031178
2007-10-09 12:20
2007.11.11
Компоненты