我有一個本機目標應用程式,它使用Direct3D11. 我想通過注入 DLL 和掛鉤一些 API(不重要,但它是 XInputGetState)來擴展目標的功能。注入 DLL 時,它還會創建一個視窗并提供一些有用的資訊。為了在視窗中呈現資訊,我使用Direct2D,但在注入 DLL 后,在另一個行程的地址空間中,呼叫ID2D1Factory::CreateHwndRenderTarget 失敗并顯示錯誤代碼D2DERR_NO_HARDWARE_DEVICE并且不創建ID2D1HwndRenderTarget物件。Factory 物件創建成功且不為 NULL。
當我將專案型別從Dynamic Link Library(.dll)toApplication(.exe)和入口點從DllMaintomain并將其作為單獨的控制臺應用程式運行時,ID2D1Factory::CreateHwndRenderTarget 成功.
我認為問題是由已創建的 Direct3D11 設備的存在引起的,但我不確定。
是否有相關檔案?我該如何解決這個問題?
uj5u.com熱心網友回復:
通過DllMain中的CreateThread將D2D創建函式直接放入新執行緒中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/428310.html
