AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DX10 / proxydll Problem

DX10 / proxydll Problem

Offene Frage von "GOOFY009"
Ein Thema von GOOFY009 · begonnen am 8. Apr 2010
Antwort Antwort
GOOFY009

Registriert seit: 24. Okt 2009
20 Beiträge
 
#1

DX10 / proxydll Problem

  Alt 8. Apr 2010, 23:54
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:
 
function 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;
Wie im Quelltext zu sehen bzw. vermerkt funktioniert es nur wenn ich die Variable von der originalen DLL
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz