Ich kann dein Problem nachvollziehen... habe mich zu Beginn auch gewundert aber UCHAR ist etwas missverständlich verwendet. Letztendlich kommt ein
Unicode String raus. Ich hab das ganze dann einfach mit PWideChar gemacht. Hier mein Code:
Delphi-Quellcode:
var b: PWideChar;
s: DWORD;
tmp: TGUID;
{...}
PowerReadFriendlyName(0, @tmp, nil, nil, nil, @s);
GetMem(b, s);
PowerReadFriendlyName(0, @tmp, nil, nil, Pointer(b), @s);
Memo.Lines.Add('Friendly Name --> '+ b);
FreeMem(b);
{...}
Der erste Aufruf dient dabei nur dazu die benötigte Buffergröße zu ermitteln. Ich hoffe der Code ist soweit korrekt (bei mir hat es funktioniert).