Statt PWideChar einfach WideString verwenden.
WideString ist eine "Umleitung" (Kapselung) auf einen
OLE-String (der OleAut32.dll), den eigentlich jede Programmiersprache versteht und der auch von Windows bei vielen Schnittstellen Verwendung findet.
SysAllocStringLen SysFreeString SysStringLen
Die Speicherverwalung wird dann von der OLE32 vorgenommen, womit also Einer den String erstellen und der Andere ihn wieder freigeben kann, da beide Seiten den selben Speichermanager verwenden.
Wenn diese
DLL in der Delphi-Welt bleibt, also nur bei Delphi-Anwendungen eingebunden wird, dann kann man auch Delphi-Strings (AnsiString/UnicodeString) verwenden, wenn man SimpleShareMem (früher ShareMem) verwendet.