|
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
|
||||||
Прямой доступ к видеопамяти18.07.2013, 17:10. Показов 15358. Ответов 41
Метки нет (Все метки)
Требуется написать программу, которая будет напрямую обращаться в видеопамяти. Описание:
Реализовать функцию, принимающую три параметра - цвет фона, цвет тона и код символа и производящую заполнение этим символом всего экрана. Реализовать функцию очистки экрана с использованием созданной функции. Для заполнения видеопамяти воспользуйтесь указателем на беззнаковый символ. Для присвоения ему значения 0хВ8000000 необходимо осуществить явное преобразование типов. Непосредственное значение 0хВ8000000 имеет тип int. Следует сначала привести тип этого значения к void* а затем - к unsigned char* для того, чтобы присовение стало возможным. Для обращения к различным байтам видеопамяти воспользуйтесь этим указателем. Видеопамять организована следующим образом: байт по адресу 0хВ8000000 содержит код символа в левом верхнем углу экрана. Следующий за ним байт содержит цвет фона и цвет тона этого символа. В старшей половине этого байта содержится цвет фона, в младшей - цвет тона. Коды некоторых цветов: 0х0 - черный, 0х7 - серый, 0хf - белый При выполенини работы производите периодическое сохранение программы, так как некорректная работа с памятью может привести к ошибке ЭВМ и потере данных в оперативной памяти. КОД, КОТОРЫЙ НЕ РАБОТАЕТ:
Доступно ли прямое обращение к памяти в Windows 7 в режиме user mode?
0
|
||||||
| 18.07.2013, 17:10 | |
|
Ответы с готовыми решениями:
41
Прямой доступ к видео памяти вопрос по си-подключение видеопамяти |
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||
| 18.07.2013, 17:12 | ||
|
Что значит "не работает"?
Добавлено через 1 минуту
0
|
||
|
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
|
||
| 18.07.2013, 17:14 [ТС] | ||
|
Добавлено через 1 минуту Т.е. я правильно понял, что для того, чтобы сделать скриншот, нужен либо драйвер, либо системные вызовы?
0
|
||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
||||
| 18.07.2013, 17:16 | ||||
|
во времена Доса такое было возможно а теперь где она эта видеопамять ? в видеокартах по гектару и больше может стоять и откуда ты взял этот адрес? такой помню 0xA800:0x8000 и такой 0xB000:0000 а 32битных не припомню так что только через DirectX, и то это будет не реальная память а проекция её на твое адресное пространство Добавлено через 48 секунд
1
|
||||
|
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
|
|
| 18.07.2013, 17:20 [ТС] | |
|
Где в современных ОС хранится изображение? В озу?
0
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
|||
| 18.07.2013, 17:22 | |||
|
конкретно изображение чего
0
|
|||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||
| 18.07.2013, 17:25 | ||
|
Но теперь да, подобные штуки остались только в истории - лет 30 назад.....
0
|
||
|
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
|
|
| 18.07.2013, 17:28 [ТС] | |
|
0
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
|||
| 18.07.2013, 17:32 | |||
|
Не по теме:
давно было не помню, да и писал в основном тогда на ассемблере но я писал всегда так сегмент:смешение Добавлено через 2 минуты ты конкретно что хочешь сделать? рисовать на десктопе? экран сохранить?
1
|
|||
|
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
|
|
| 18.07.2013, 17:40 [ТС] | |
|
То есть, если я правильно понял, надо глядеть в сторону kernel mode?
0
|
|
|
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
|
|
| 18.07.2013, 17:43 | |
|
0
|
|
|
Ушел с форума
|
||
| 18.07.2013, 17:54 | ||
|
содержимым дисплея. Потом из-за DRM их стали целенаправлено вырезать (чтобы нельзя было грабить защищенный медиа-контент), а в Windows 8 вообще убрали.
2
|
||
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
|
|||
| 03.07.2023, 02:54 | |||
|
А прямая запись в видеопамять давно уже юзер-спейс приложениям запрещена из соображений безопасности.
0
|
|||
| 03.07.2023, 05:42 | |
|
Не по теме: Это без проблем можно там, где нет защиты и ограничений.
0
|
|
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|
| 03.07.2023, 08:33 | |
|
А всё же, мог бы кто-нибудь кратенько расссказать как сейчас железячно устроен обмен с отображаемым изображением в современных архитектурах PC?
Можно ли получить отборажение видеопамяти (той, что отрисовывается на дисплее сейчас) в какое-либо адресное пространство? (не берём в расчет "Windows не пустит обращения в память куда попало"). Или к "видеопамяти" вообще уже нет никакого доступа напрямую, а всей отрисовкой занимается процессор видеокарты, принимая команды типа "нарисуй окружность"? Меня тоже интересует этот вопрос для общего развития.
0
|
|
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
|
||||
| 03.07.2023, 10:03 | ||||
|
Самый простой способ я видел, когда читал про изготовление USB-мониторчика. Там картинка средствами проца рисуется в специально выделенной памяти, а потом целиком выбрасывается по USB для отображения. То есть рендеринг полностью софтварный. Аналогичный способ используется когда надо запустить программу с GUI, но графики на компьютере не установлено - виртуальный фреймбуфер. Программа отправляет стандартные команды рисования, а драйвер их тихонько утилизирует. Но это все же экзотика. Если же мы говорим про "обычный" вывод графики, то он построен на общении с видеокартой. Передача ей координат примитивов, матриц преобразования, текстур. А еще шейдеров - программ, скомпилированных под процессор видеокарты и собственно команд что со всем этим делать. Как именно это реализовано на совсем уж низком уровне, точно не скажу. Но наверняка каждый производитель извращается как может, и наверняка сам обмен выглядит так же, как и с любым другим устройством - запись в порты, передача массивов данных, прерывания и опрос флагов. А что вам мешает сформировать картинку в собственной оперативной памяти, создать обычное окно и вывести туда? Ну например, glDrawPixels. Вроде бы и через более простые библиотеки вроде SDL это можно, но надо искать. В интернете встречал даже вариант рисования в файл картинки, вообще без работы с экраном. Но в целом да, вы посылаете команды "создать окно", "создать кнопку", а графический сервер их выполняет. Ваша программа на экране ведь обычно не одна, нехорошо если она полезет рисовать поверх чужих окон.
0
|
||||
|
|
|
| 03.07.2023, 11:52 | |
|
Nexi99, ты опять своим хакерством занимаешься?
0
|
|
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
||
| 03.07.2023, 11:58 | ||
|
Хорошо, а в случае готовый картинки? Подчеркну еще раз: вопрос не про API какое-либо, с API все понятно. Как оно железячно сейчас сделано? (ранее область ОЗУ c заранее известными адресами "проецировалась" на монитор.)
0
|
||
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
|
|||
| 03.07.2023, 12:50 | |||
|
В более типичном случае - в памяти видеокарты. Так или иначе прямого доступа туда для юзерских приложений нет. Нечего им рисовать поверх чужих окон. --- Вы лучше опишите чего добиться хотите.
0
|
|||
| 03.07.2023, 12:50 | |
|
Помогаю со студенческими работами здесь
20
Прямой доступ к видеопамяти Прямой доступ к видеопамяти в DirectХ 9 Прямой доступ к видеопамяти в режиме VESA
Доступ к видеопамяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|