Чтение данных VRAM - PullRequest
       1

Чтение данных VRAM

2 голосов
/ 24 ноября 2011

Я пытаюсь создать программу на C ++, чтобы фиксировать все, что отображается на экране.

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

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

Я знаю, что VRAM хранит каждый отдельный пиксель, который идет на монитор. Это то, что я хочу, чтобы моя программа читала и быстро читала со скоростью около 30 кадров в секунду. Мне нужно сырое растровое изображение, которое хранится в VRAM непосредственно перед его преобразованием в аналоговый.

Edit: - Я только что нашел эту библиотеку sdl и pixel toaster ... они могут читать так называемый кадровый буфер .... это будет полезно, также opengl имеет метод getPixels (), который может читать данные буфера из всех приложений независимо от того, что работает ??

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

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

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

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

0 голосов
/ 24 ноября 2011

При аппаратном наложении изображение может не содержать изображения экрана и курсора мыши.

Код, который захватывает экран без курсора мыши, читает VRAM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...