Запретить функцию «d3d9.dll» «D3D9SetMode», вызывая «ChangeDisplaySettingsExA»

Я использую сторонний .dll, который оборачивается вокруг DirectX d3d9.dll, изменяя оригинальное исполнение .dll. Хорошо известный пример этого типа установки используется Fraps.

Я создаю полноэкранное эксклюзивное устройство в многоголовочном режиме (D3DCREATE_ADAPTERGROUP_DEVICE).

Я столкнулся с проблемой, когда оболочка .dll закрывает мою программу при вызове определенной функции D3D9SetMode,

Вот частичный стек вызовов, сгенерированный WinDbg от разрыва, когда ChangeDisplaySettingsExA функция называется:

0018e748 7024712d USER32!ChangeDisplaySettingsExA
0018e828 7024702e d3d9!D3D9SetMode+0xec
0018e858 70246fab d3d9!DdSetModeLH+0x83
0018e954 7024760b d3d9!CSwapChain::SetSwapChainDisplayMode+0x5ca
0018e9a4 702492b0 d3d9!CSwapChain::DoneExclusiveMode+0xc7
0018e9c8 702491fc d3d9!CEnum::DoneExclusiveMode+0x5d
0018ea18 7024904a d3d9!handleActivateApp+0x12f
0018ea40 763862fa d3d9!WindowProc+0x30f
...

Я разработал WM_ACTIVATE последнее сообщение, которое будет обработано до того, как это произойдет.

Я пытался собрать против DirectX9 февраль 2005 и 2007 SDK (d3dx9_24.dll а также d3dx9_32.dll соответственно) — у них обоих одинаковые проблемы.

Я подозреваю, что есть флаг или сценарий настройки, чтобы предотвратить вызов ChangeDisplaySettingsExA, я пытался D3DCREATE_NOWINDOWCHANGES на создание устройства без какого-либо успеха.

Любые ссылки, информация, идеи?

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]