游戏 Red Alert 2 在 Windows 8 上运行,但是一旦我注入 DLL(通过 ddraw.dll 或额外的 DLL),它就会停止在主菜单上绘制按钮。使用 DLL,它在窗口模式下仍然可以正常工作,并且在 Windows 7 上仍然可以正常工作。 DLL 基本上只是
typedef HRESULT(WINAPI* LPDIRECTDRAWCREATE)(GUID*, LPDIRECTDRAW*, IUnknown*);
HMODULE dd_dll = LoadLibrary("system32/ddraw.dll");
LPDIRECTDRAWCREATE dd_create = reinterpret_cast<LPDIRECTDRAWCREATE>(GetProcAddress(dd_dll, "DirectDrawCreate"));
return dd_create(lpGUID, lplpDD, pUnkOuter);
我猜为被 DLL 禁用的原始游戏激活了某种自动兼容模式,但我如何找出导致这种情况的原因?这很重要,因为 DLL 为游戏玩家提供了改进,这些改进也应该在 Windows 8(及更高版本)上可用。