Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: выбор и обоснование языка программирования  (Прочитано 14598 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Валикос
Гость
« : 08-12-2008 14:53 » 

Нужна помощь, нужно обосновать выбор языка С++ для написания драйвера системы, драйвер обеспечивает защиту каталогов от несанкционированного доступа, это курсовой проект, и препод настоятельно требует прерывания DOSа, все что реализовано на ассемблере это
 
Код:
inline ULONG DisableKernelDefence( KIRQL* OldIrql )
{
ULONG OldCr0 = 0;

__asm
{
cli;
mov eax, cr0;
mov OldCr0, eax;
and eax, 0xFFFEFFFF;
mov cr0, eax;
}
return ( OldCr0 );
}

и
Код:
inline VOID EnableKernelDefence( ULONG OldCr0, KIRQL OldIrql )
{
__asm
{
mov eax, OldCr0;
mov cr0, eax;
sti;
}
}
подайте толковые идеи, может кто знает аналоги прерываний DOSа, работа идет на уровне ядра
заранее спасибо
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 08-12-2008 14:56 » 

А что из C++ требуется использовать, чего бы не было в чистом C? (сижу, думаю: может, тему стоит в драйверы переместить?)
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #2 : 08-12-2008 15:01 » 

проблему в реализации не вижу, а чего хочем препод я не понял
Записан

Странно всё это....
Валикос
Гость
« Ответ #3 : 08-12-2008 15:07 » 

преподу как я понял нужны прерывания типа INT 10 или 20 или 40 в коде, как это делается в ассемблере, не вечно ж теперь за ассемблером сидеть, должны же быть альтернативы этим прерываниям, ZwQueryDirectoryFile мне кажется это есть одна из альтернатив этим прерываниям, как точно истолковать что используется именно  язык С++
Записан
Валикос
Гость
« Ответ #4 : 08-12-2008 15:09 » 

Может и перенести в драйверы, мне нужны факты которые обоснуют выбор языка с/с++
Записан
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #5 : 08-12-2008 15:15 » 

Вы меня простите, но я лично ничерта не понял из выше изложенного. Преподу нужна реализация аля ассемблер, но не ассемблер? Преподу нужна реализация на ассемблер, но вы хотите доказать что на си круче? Какие факты вам нужны? для чего? почему? зачем? Мне ничего не ясно.

Если вы хотите решать задачу на си, так и скажите преподу что будите решать на си, потому то и потому то, если препод будет стучать ножками по полу и говорить что: "нееееет, только асемблер", то он идиот Улыбаюсь ИМХО. Если вы хотите на си написать очень похожий код на асемблер, то используйте вставки асемблера, только вот начерта это нужно?

Для начала объясните нам: КАКИЕ ОБОСНОВАНИЯ ВЫБОРА ЯЗЫКА СИ???
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 08-12-2008 15:18 » 

Мне вот больше интересно, каковы обоснования позиции преподавателя: что именно он хочет, и насколько язык решения для него критичен. Если не критичен - можно рассуждать дальше, если только ассемблер, и ничего более - то стоит ли спорить?
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #7 : 09-12-2008 07:02 » 

прежде всего что за ОС? когда мне говорят INT 10 или 20 или 40 я вспоминаю DOS, когда мне говорят ZwQueryDirectoryFile я думаю о Windows, а когда говорят:
преподу как я понял нужны прерывания типа INT 10 или 20 или 40 в коде, как это делается в ассемблере, не вечно ж теперь за ассемблером сидеть, должны же быть альтернативы этим прерываниям, ZwQueryDirectoryFile мне кажется это есть одна из альтернатив этим прерываниям, как точно истолковать что используется именно  язык С++

то я начинаю думать, что кто-то что-то не понимает.
Записан

Странно всё это....
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 09-12-2008 09:17 » new

Предлагаю внести ясность.


Прерывание 0x13 из BIOS осуществляет прямой доступ к диску вне зависимости от файловой системы. Поскольку речь идёт о каталогах, то речь идёт о какой-то файловой системе, и прямое обращение к диску не подходит.

Если это файловые системы Microsoft, то либо это какой-то FAT, либо NTFS. В FAT нет никаких встроенных средств разделения прав разных пользователей при обращении к файлам (каталогам) - есть только возможность управления общими для всех правами через атрибуты. В NTFS есть возможность раздельного управления правами разных пользоваталей при обращении к файлам (каталогам).

Соответственно, задача либо сводится к разработке системной надстройки над FAT, либо к разработке приложения к NTFS.

FAT работает под DOS и Windows, NTFS под Windows ветки NT. Системные архитектуры DOS и Windows NT кардинальным образом различаются.

Для разработки надстройки над DOS нужно будет перехватить прерывание 0x21 в части функций работы с файлами и каталогами. Для разработки приложения к NTFS нужно будет разобраться с функциями ядра и драйвера, взаимодействием ядра и драйвера, управлением пользователями чтобы увидеть, что и где нужно вызывать для настройки нужных прав.

Выбор языка прямо зависит от конкретной задачи. Для надстройки над DOS это может быть сочетание ассемблера и C/C++, для приложения Windows это будет C/C++.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines