Sollte im Prinzip so funktionieren:
Delphi-Quellcode:
type
PDocument = ^TDocument;
TDocument = packed record
Version: Integer;
FileName: PAnsiChar;
Data: Pointer;
DataLen: Integer;
end;
function Sign(Document: PDocument; DocumentCount: Integer;
cipherCerts: Pointer; cipherCertCount: Integer;
softKeyData: Pointer; softKeyDataCount: Integer): Integer;
Von den Arrays wird nur immer die Adresse des ersten Elements übergeben.
Zu TDocument:
- Für Data kann man direkt die Adresse und Größe des Puffers eines MemmoryStream verwenden.
- Filename muss irgendwo als AnsiString zwischengespeichert werden, solange TDocument in Verwendung ist (damit der Zeiger gültig bleibt).
Sollte es dann immer noch Fehler geben, vollständigen Quellcode der Umsetzung mit Deklarationen bitte.