Auweia, Micha, gleich mehrere Anfängerfehler.
1. Doku nicht gelesen
2. Prototyp falsch übersetzt (ich habe der Einfachheit halber DWORD genommen, das ist aber irrelevant)
Also
Read
The
Friendly
Manual ...
Delphi-Quellcode:
function NetUserModalsGet(Servername: LPCWSTR; Level: DWORD; var bufptr: Pointer): DWORD; stdcall; external 'Netapi32.dll';
function NetApiBufferFree(buf: Pointer): DWORD; stdcall; external 'Netapi32.dll';
var
UserModalsInfo: PUSER_MODALS_INFO_0;
dwRet: DWORD;
const
NERR_Success = 0;
begin
UserModalsInfo := nil;
dwRet := NetUserModalsGet(nil, 0, Pointer(UserModalsInfo));
if ((dwRet = NERR_Success) and Assigned(UserModalsInfo)) then
...
else
...;
if Assigned(UserModalsInfo) then
NetApiBufferFree(UserModalsInfo);
end.
Statt Pointer kannste natürlich auch wie immer PByte nehmen - so steht's ja im Header eigentlich. Ist aber schnuppe.
Nachtrag
Kleiner Tip noch: der "DWORD"-Wert den du zurückbekamst war ein Pointer auf dem Heap (hat man am Hex(!)-Zahlenwert schon gesehen).