Das Problem beim zweiten müsste sein, dass du einen pointer auf ein Objekt übergibst, wo das Objekt verlangt wird. Wenn ich mich recht erinnere, musst du beim Funktionsaufruf vor dem pointer ein '*' zum dereferenzieren hinzufügen.
Code:
LPDIRECTDRAWSURFACE7* pointer = 0;
irgendeineFunktion(0,0, *pointer);
Wegen dem ersten Fehler:
Inwiefern hängen LPDIRECTDRAWSURFACE7 und 'CSurface zusammen? Vererbte klassen?
Und zeig da mal ein bisschen Code an der Stelle des Funktionsaufrufes und davor.