![]() |
DX10 / proxydll Problem
Hi !
Nach dem ich (auch unter Mithilfe hier aus dem Board) erfolgreich eine DX9-Proxydll geschrieben habe, wollte ich mich nun an DX10 machen. Bisher funktioniert auch alles tadellos.... bis zu einem gewissen Punkt. Aber der Reihe nach: 1. Ich fange den Aufruf "CreateDevice" an die d3d10.dll ab und gebe meine eigene Klasse von ID3D10Device weiter. 2. Es wird ein QueryInterface von IDXGIDevice gefordert welches auch durch eine eigene Klasse ersetz wurde. 3. Es werden diverse weiter, mir unbekannte, TGUID angefordert die allerdings von der original DLL ebenfalls mit NIL beantwortet werden und somit offenbar keinen Einfluß auf den weiteren Verlauf haben. 4. Von der IDXGIDevice-Klasse wird per "GetParent" ein IDXGIAdapter angefordert. Auch dies wird durch eine eigene Klasse ersezt und funktioniert. 5. Von der IDXGIAdapter-Klasse wird auch per "GetParent" ein IDXGIFactory angefordert (ganz wichtig, da hiermit die SwapChain angelegt wird!) und hier passiert es. Die eigene Klasse wird, wieso auch immer, nicht als Rückgabe akzeptiert?!
Delphi-Quellcode:
Wie im Quelltext zu sehen bzw. vermerkt funktioniert es nur wenn ich die Variable von der originalen DLLfunction myIDXGIAdapter.GetParent(const IID: TGUID;out pParent): HResult; stdcall; var hr : HRESULT; pmyIDXGIFactory : IDXGIFactory; ppmyIDXGIFactory : IDXGIFactory; begin if (GUIDToString(IID) = IDXGIFactoryStr) then begin hr := m_pIDXGIAdapter.GetParent(IID,pmyIDXGIFactory); ppmyIDXGIFactory := myIDXGIFactory.create(pmyIDXGIFactory); Pointer(pParent) := Pointer(ppmyIDXGIFactory); /////////////////////////////////////////////////////// // Diese Rüchgabe ohne die Klasse funktioniert !!! //// // Pointer(pParent) := Pointer(pmyIDXGIFactory); ////// /////////////////////////////////////////////////////// result := hr; end else begin result := m_pIDXGIAdapter.GetParent(IID,pParent); end; end; zurück gebe. Hat jemand eine Lösung dafür bzw. sich schon mal mit diesem "Problem" auseinander gesetzt? Bin für jede Hilfe, jeden Tip dankbar. CU GOOFY |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz