Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.51/35: Рейтинг темы: голосов - 35, средняя оценка - 4.51
2 / 2 / 0
Регистрация: 12.02.2011
Сообщений: 55
1

Прямой доступ к видео памяти

12.02.2011, 11:41. Просмотров 6380. Ответов 12
Метки нет (Все метки)

Здравствуйте, подскажите как организовать прямой доступ к видео памяти на современно VGA/DVI видео адаптере.
В Книги Шилдта есть указания как сделать это,но на старых видео адаптерах. Там указанно что надо создать указатель на область памяти 0xB0000000 - если монохромный видео адаптер, или на область - 0xB8000000 - если это EGA или CGA адаптер.
Но книга 1989 года издания, как реализовать это в современных условиях.
P.S: я пишу консольное приложения, до для разработки и управление интерфейсом мне необходим доступ в видеопамяти.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2011, 11:41
Ответы с готовыми решениями:

Прямой доступ к памяти
Как прочитать произвольный адрес оперативной памяти? Заранее спасибо!

Прямой доступ к памяти
Подскажите как сделать чтобы функция ChangeId меняла член структуры, я рассматриваю что после...

Есть ли средства для питон, позволяющие получить прямой доступ к памяти?
Есть ли средства для питон, которые бы позволили напрямую обращаться к памяти?

Прямой доступ к битмапу
К сожалению, в моей предыдущей теме какие-то конкретные советы по моей проблеме дать никто не смог,...

12
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
12.02.2011, 13:32 2
Делал такие вещи на АСМе, по книге где-то того же времени (даже наверное раньше)), все получилось)

Цитата Сообщение от Liricnet Посмотреть сообщение
В Книги Шилдта есть указания как сделать это,но на старых видео адаптерах. Там указанно что надо создать указатель на область памяти 0xB0000000 - если монохромный видео адаптер, или на область - 0xB8000000 - если это EGA или CGA адаптер.
А что за книга? Давно хотел узнать, как в языках С/С++ можно указателю принудительно константное значение присвоить, сам пробовал - не компилировалось(
0
2 / 2 / 0
Регистрация: 12.02.2011
Сообщений: 55
12.02.2011, 13:41  [ТС] 3
Г. Шилдт "С для профессиональных программистов"
Просто у меня курсовая по ЯВУ, а конкретно С/С++
я поэтому хотел бы узнать как это на языке Си реализовать...
0
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
12.02.2011, 13:47 4
в 89-м году был DOS. современные системы не дают доступа напрямую к памяти других приложений (см. изоляция процессов) и к портам ввода-вывода (уровень ядра системы). так что реализовать можно только через обращения к драйверу, в зависимости от системы.
да и вообще, если не секрет, зачем доступ напрямую, если есть множество библиотек для работы с графикой?
0
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
12.02.2011, 13:51 5
Iron Bug, возможно сделать именно через адреса. Просто современные ОС естетвенно тебя не пустят туда, куда не просят, но они поймут, что тебе нужно и будет с эмулированно обращение к адресу. Хотя в действительности конечно же итог работы программы будет достигнут другим путем, но это уже программисту знать не обязательно (я вот, если честно не знаю, только догадываюсь))
0
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
12.02.2011, 15:06 6
насколько мне известно, начиная с Win2K все эти лазейки прикрыты. и надёжно. и к портам уже давно никто не лазит.
пишите драйвер - тогда пожалуйста. с уровня ядра можно и напрямую.
0
2 / 2 / 0
Регистрация: 12.02.2011
Сообщений: 55
13.02.2011, 18:50  [ТС] 7
А еще варианты как можно изменить выведенное на экране изображение/текст/псевдографику не используя функцию очистки экрана? Какие winAPI функции предусмотрены? и какие библиотеки требуются?
Подскажите плиз, а то каждый раз при изменение использовать windows("cls") или clrscr(); как то слишком грубо и неприятно для глаз...
0
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
13.02.2011, 22:42 8
ну, вариантов-то много. про API навскидку не скажу. нет у меня дома венды, чтобы посмотреть. а так, есть DirectDraw и если требуется работа с изображением на экране, то лучше копать в эту сторону. но это, опять же, смотря какая задача. а то из пушки по воробьям не очень эффективно.
0
Day
1169 / 979 / 83
Регистрация: 29.10.2009
Сообщений: 1,386
14.02.2011, 11:46 9
В 1990 (ДОС еще) написал
C
1
 char far *vidmem = (char far *) 0xB000000;;
и делал там, что хотел.
С тех пор прошло много виндов, программы прекрасно работают как в полноэкранном режиме, так и в окне. Видимо, эмулируется досовская видеопамять, и эмулируется правильно.

Добавлено через 2 минуты
Цитата Сообщение от Liricnet Посмотреть сообщение
А еще варианты как можно изменить выведенное на экране изображение/текст/псевдографику не используя функцию очистки экрана? Какие winAPI функции предусмотрены? и какие библиотеки требуются?
Подскажите плиз, а то каждый раз при изменение использовать windows("cls") или clrscr(); как то слишком грубо и неприятно для глаз...
Пиши спокойно по указанному адресу. Только не забудь, что на символ там 2 байта - символ и цветовой атрибут.
А вот кто бы мне сказал как цвет курсора изменить?

Добавлено через 7 минут
ЗЫ. Если интересно, могу скинуть досовский редактор с исходниками. А то как-то жалко, такая вещь пропадает!
2
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
14.02.2011, 14:15 10
Цитата Сообщение от Day Посмотреть сообщение
Видимо, эмулируется досовская видеопамять, и эмулируется правильно.
Так и есть) Когда начинал на АСМе под ДОС писать, читал лит-ру на эту тему, все эмулируется, даже прерывания.
0
2 / 2 / 0
Регистрация: 12.02.2011
Сообщений: 55
14.02.2011, 20:37  [ТС] 11
а какой компилятор лучше использовать? просто мне MS Visual Studio говорит что-то типа неверный адресс =(((
0
2008 / 1280 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
14.02.2011, 21:00 12
Цитата Сообщение от Liricnet Посмотреть сообщение
а какой компилятор лучше использовать? просто мне MS Visual Studio говорит что-то типа неверный адресс =(((
все что было сказано выше компилируется под дос, но работает и под виндой. В MS Visual Studio нельзя скомпилировать программу под дос, придется поискать старый досовский компилятор, что то типа turbo C. Только вот зачем это в винде, где есть тот же DirectX например?
0
Эксперт C
24347 / 15036 / 3164
Регистрация: 24.12.2010
Сообщений: 32,165
14.02.2011, 21:34 13
Цитата Сообщение от Liricnet Посмотреть сообщение
а какой компилятор лучше использовать? просто мне MS Visual Studio говорит что-то типа неверный адресс =(((
Из архаики могу посоветовать Borland C 2.0 или 3.1.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2011, 21:34

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

Прямой IP-доступ запрещен
Здравствуйте, при подключении к сайту возвращается ответ, в котором сказано: "Direct IP access not...

Прямой доступ к переменным
Доброго времени суток, форумчане. Сразу оговорю, что название темы может не совсем корректно...

Прямой доступ к видеопамяти
Здраствуйте уважаемы программеры! У меня к вам огромная просьба не могу написать казалось бы...

Прямой доступ к файлу
Есть заполненный бинарный файл с действительными числами. Нужно изменить этот же файл, изменив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.