Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

LookupAccountSidW und Datenbereich zu klein

  Alt 7. Mär 2007, 13:04
Wenn ich folgenden Code ausführe:
Delphi-Quellcode:
function StrSIDToName(const StrSID: Widestring; var Name: WideString; var SIDType: DWORD): DWORD;
var
  SID : PSID;
  Buffer : PWideChar;
  NameLen, TempLen : Cardinal;
  err : Boolean;
begin
  SID := nil;
  err := ConvertStringSIDToSID(PWideChar(StrSID), SID);
  if err then
  begin
    NameLen := 0;
    TempLen := 0;
    if LookupAccountSidW(nil, SID, nil, NameLen, nil, TempLen, SIDType) then
    begin
      GetMem(Buffer, NameLen);
      try
        err := LookupAccountSidW(nil, SID, Buffer, NameLen, nil, TempLen, SIDType);
        if err then
        begin
          SetString(Name, Buffer, Namelen);
          SetLastError(0);
        end;
      finally
        FreeMem(Buffer);
      end;
    end;
  end;
  if Assigned(SID) then
    LocalFree(Cardinal(SID));
  result := GetLastError;
end;
fliege ich beim ersten Aufruf von LookupAccountSidW und erhalten den Fehler:
Zitat:
Der an einen Systemaufruf übergebene Datenbereich ist zu klein.
Aber ich will doch die Größe des Datenbereichs ermitteln? Wie kann da der Datenbereich schon zu klein sein?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat