Das sieht soweit mal OK aus.
Prüfe mal, ob die Variable FTafmoConnectionToken einen Wert <> 0 erhält.
Ausserdem für jede der leeren Methoden eine Ausgabe mit OutputDebugString einbauen:
Delphi-Quellcode:
function TTafmoEventSink.GetIDsOfNames(const IID: TGUID; Names: Pointer;
NameCount, LocaleID: integer; DispIDs: Pointer): HResult;
begin
OutputDebugString('TTafmoEventSink.GetIDsOfNames() called');
Result:=S_OK;
end;
So lässt sich feststellen, ob der Server eine deiner leere Methoden aufruft, die du ja nicht implementiert hast.