Как я могу избежать сбоя OpenGL в программе снимка Mine (Windows)?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как я могу избежать сбоя OpenGL в программе снимка Mine (Windows)?

Сообщение Anonymous »

Я пытаюсь реализовать функциональность снимка процесса в C ++ в Windows X64, стремясь сохранить состояние времени выполнения процесса и восстановить его после определенного периода при сохранении процесса. Моя цель состоит в том, чтобы выполнить все операции в пользовательском режиме, когда это возможно. Это работает правильно с более старыми программами, такими как MineSweeper, Plants vs. Zombies и пользовательские приложения командной строки. В nvoglv64.dll с кодами ошибок 0xc0000409 и 0xc0000005 . Я попытался пропустить области памяти, связанные с этим модулем, но ошибки сохраняются. > [*] Take Snapshot: < /strong> < /p>
  • Заморозить все потоки → Сохранить контексты потока & teb → Drasple Все области памяти → Разрешенные потоки.


[*] восстановить снимок: [/b]
  • Заморозить все потоки → перезаписать области памяти → восстановить контексты потока и teb → разморозить потоки. < /li>
    < /ul>
    < /li>
    < /ol>
    анализ: < /strong>

    Проблема, вероятно, связана с ручками ресурсов OpenGL (например, Текстуры, буферы) в памяти графического процессора (VRAM). Эти специфичные для графического процессора состояния не отражаются во время снимка процесса, что приводит к несоответствиям состояния после восстановления. Хотя VRAM не доступен непосредственно, я предполагаю, что сохранение состояний GPU может потребовать косвенных методов, таких как инъекция процесса или перенаправление DLL. Я попытался выполнить эти подходы, но не имею достаточных знаний о том, чтобы отдать внутренние внутренности двигателя для решения проблемы. < /P>
    Как я могу решить проблему сбоя?

    Программа: snapshot.exe
    (автоматически снимки снимка с именем test.exe и Восстанавливает его через 4 секунды). < /p>
    < /li>
    Дамп сбоя (.dmp) из программы сбоя доступен. < /p>
стек ошибок
nvoglv64!vk_icdNegotiateLoaderICDInterfaceVersion+0xcade5

nvoglv64!DrvValidateVersion+0xaa0a

nvoglv64!DrvPresentBuffers+0x2acd7

nvoglv64!DrvPresentBuffers+0x2a217

nvoglv64!DrvPresentBuffers+0x188b3

nvoglv64!DrvPresentBuffers+0x1302c2

nvoglv64!DrvPresentBuffers+0x132598

nvoglv64!DrvPresentBuffers+0x13478d

nvoglv64!DrvPresentBuffers+0x13338b

nvoglv64!DrvPresentBuffers+0x14d9d8

nvoglv64!DrvValidateVersion+0x6c76

nvoglv64!DrvPresentBuffers+0x112ca1

nvoglv64!DrvPresentBuffers+0xc9218

nvoglv64!DrvPresentBuffers+0xef6f2

nvoglv64!DrvPresentBuffers+0xef00d

nvoglv64!DllMain+0x7d46

nvoglv64!DllMain+0x7ebd

nvoglv64!DllMain+0x7c9e

nvoglv64!DllMain+0x760e

nvoglv64!DrvSwapLayerBuffers+0x2b6

nvoglv64!DllMain+0xa683

nvoglv64+0x11133a3

nvoglv64+0x1113087

nvoglv64!DrvValidateVersion+0xd988

kernel32!BaseThreadInitThunk+0x14

ntdll!RtlUserThreadStart+0x21


Подробнее здесь: https://stackoverflow.com/questions/794 ... am-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»