WOW,
hätte ja nicht gedacht, dass mein "kleines" Problem zu einem doch etwas "größerem" Entwickelt.
Ich habe dem Post mal meine momentanen Sourcen inkl.
DirectX Headern und dem Testprogramm CreateDevice angehängt.
Vieleicht kann sich das ja mal jemand anschauen und findet vieleicht so den Fehler bzw. eine Lösung des Problems.
Beim Rückgabewert habe ich bisher mehrere Varianten probiert... die letzten 2 schienen mir am ehesten "Funktional" zu sein,
brachten aber leider keinen Erfolg.
1. Variante :
Delphi-Quellcode:
function Direct3DCreate9(SDKVersion: cardinal): IDirect3D9; stdcall;
.....
function Direct3DCreate9(SDKVersion: LongWord): IDirect3D9;
begin
if gl_hOriginalDll = 0 then LoadOriginalDLL;
@Direct3DCreate9original := GetProcAddress(gl_hOriginalDll, 'Direct3DCreate9');
pmyIDirect3D9 := myIDirect3D9.Create;
pmyIDirect3D9.myIDirect3D9(IDirect3D9(Direct3DCreate9original(SDKVersion)));
pmyIDirect3D9._AddRef;
result := pmyIDirect3D9 as IDirect3D9;
end;
2. Variante :
Delphi-Quellcode:
function Direct3DCreate9(SDKVersion: cardinal): Pointer; stdcall;
.....
function Direct3DCreate9(SDKVersion: LongWord): Pointer;
begin
if gl_hOriginalDll = 0 then LoadOriginalDLL;
@Direct3DCreate9original := GetProcAddress(gl_hOriginalDll, 'Direct3DCreate9');
pmyIDirect3D9 := myIDirect3D9.Create;
pmyIDirect3D9.myIDirect3D9(IDirect3D9(Direct3DCreate9original(SDKVersion)));
pmyIDirect3D9._AddRef;
result := pmyIDirect3D9;
end;
Beides wird vom Aufrufenden Programm (CreateDevice) mit "Runtime error 216 at xxxx" quittiert.
Ein eigenes Interface zu schreiben, welches von IDirect3D9 abstammt, bringt ja nix weil ich ja die
DirectX-Funktionen vom aufrufenden Programm abfangen, in meiner
DLL verarbeiten und dann an die originale d3d9.dll weitergeben möchte. Ergo brauche ich ja eine eigene Klasse.
Wäre schon übel wenn das ganze scheitert, nur weil der Compiler von Delphi hier einen "Fehler" macht......(wenn ich die anderen Posts richtig verstanden habe).
Ich werd mal auf jeden Fall weiter im Netzt suchen und das eine oder andere dann vieleicht Probieren. Die Hoffnung stirbt bekanntlich ja zu letzt......
CU GOOFY