DLL-Exports können über Name und/oder Index erfolgen.
Interface-Methoden werden "ausschlißelich" durchnummeriert und der Methoden-Name hat in der Interface deklatation keinerlei Wirkung.
Ich weiß im Moment nicht, ob/wie man im Pascal/Delphi den Index definieren kann, außer automatisch über die Reihenfolge der Definition.
Auch der Interface-Name hat für Windos keine Funktion, denn das kennt nur die
GUID.
Folgende Deklarationen sind somit identisch:
Delphi-Quellcode:
IMyInterface = interface
['{C0970276-A593-4825-BA92-53FBF6CCC1F0}']
procedure TestProcedure1;
function SomeValueReturningFunction: Integer;
function AnotherFuntion: Boolean;
end;
jfdsakchdsiuhdjskxgfbjhdsgaf = interface
['{C0970276-A593-4825-BA92-53FBF6CCC1F0}']
procedure nfkdhkjcndbsjkrhfjkdsnbfvkds;
function jfkdsfhajiodsjcjkdsbnjkfhbdjksa: Integer;
function fjdshfkjdhsgfjgdsjh: Boolean;
end;
IMyIntf = interface
['{C0970276-A593-4825-BA92-53FBF6CCC1E1}']
procedure TestProcedure1;
function SomeValueReturningFunction: Integer;
end;
IMyInterface = interface(IMyIntf)
['{C0970276-A593-4825-BA92-53FBF6CCC1F0}']
function AnotherFuntion: Boolean;
end;
Es kommt ausschließlich auf Reihenfolge und Funktionssignaturen drauf an.
Das geht über die Vererbung hinaus, weswegen QueryInterface/_AddRef/_Release aus IInteface überall die selben ordinalen Werte hat und alle weiteren Methoden ab da hochzählen, über alle Hierarchien hinweg.