Ich hab dasselbe Problem:
EqualSid erfordert eine intern Klasse, in
COM ist es jedoch ein Interface.
Die untere Variante funktioniert zwar. Aber ich denke nur mit der InProc Variante.
Was mache ich aber bei OutProc oder bei Interface Zeigern in verschiedenen Apartments?
Delphi-Quellcode:
ISid = interface
...
hidden function GetInternalSid : PChar; safecall;
...
end;
TISidImp = class(...,ISid)
private
fInternalSid : TJwSid;
...
public
function TISidImp.EqualSid(const Sid : ISid) : Boolean; safecall;
function TISidImp.GetInternalSid : PChar; safecall;
function TISidImp.EqualSid(const Sid : ISid) : Boolean
begin
result := fInternalSid.EqualSid(Sid ???);
end;
//Einführung diser Funktion...
function TISidImp.GetInternalSid : PChar;
begin
result := fInternalSid;
end;
//...ermöglicht:
function TISidImp.EqualSid(const Sid : ISid) : Boolean
begin
result := fInternalSid.EqualSid(TJwSid(Sid.GetInternalSid));
end;