Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.96 MB
Время: 0.048 c
15-1190992526
vasIZmax
2007-09-28 19:15
2007.11.11
True, False и Почти (Almost, по англ. по-моему))))


15-1191931049
Riply
2007-10-09 15:57
2007.11.11
Последний IExplorer 7


2-1192561443
smartleds
2007-10-16 23:04
2007.11.11
Коллеги, подскажите как найти максимальный номер элемента


2-1189405023
Mariya
2007-09-10 10:17
2007.11.11
Поиск в Delphi


9-1162828267
Алена
2006-11-06 18:51
2007.11.11
OpenGl





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский