Du hast dir da eine Klasse erstellt, welche dieses Interface "unterstützt", welche also die Funktionalität bereit stellt, welche mann dan hinter dem Interface verstecken kann.
Und da du eine klasse hast, worin du Methoden deklariert hast, mußt du, wie bei jeder Klasse natürlich auch diese methoden implementieren, sonst weiß die Klasse ja nicht was sie machen soll.
Und genau diese fehlende implementation wurde dir vom Compiler angekreidet.
Aber du willst ja keine "eigene" Objektinstanz erstellen, welche dan über dieses Interface angesprochen wird, sondern du willst irgendeine eine fremde Instanz haben.
Im Prinzip wirst du da wohl Windows fragen müssen, ob es dir eine Instanz mit diesem Interface gibt.
Hab da jetzt auch nichts auf die Schnelle im Kopf, aber schau doch einfach mal in deren Demo nach, wo die sich diese Interface-Instanz herholen.
http://archive.msdn.microsoft.com/shellapplication > KnownFolders.zip
PS: Das Interface ist die Schnittstelle. Stell es dir wie eine Klasse vor, wo alle Funktionen als Abstract deklariert sind (z.B. TStrings oder TStream).
Jetzt brauchst du nur noch eine Funktion, welche dir eine Instanz gibt (die intern also 'ne TStringList oder TMemoryStream erstellt) und die du dann verwenden kannst (lesen und schreiben), ohne daß es dich interessiert, was für ein Objekt wirklich da drin ist.
Du hast praktisch deine eigene TXyzStream-Kalsse deklariert, zu welcher du jetzt noch die Funktionen definieren müßtest (wie z.B. TMemoStrings, welches die Zugriffe auf ein TMemo umleitet),
aber das wolltest du ja eigentlich nicht machen.