Thema: Delphi NetUserEnum die 2.

Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

NetUserEnum die 2.

  Alt 7. Feb 2003, 13:27
Hi,
entweder ich bin blöd, oder der Kompiler ist kaputt. Also, ersteinmal meine Definition der NetUserEnum aus JwaLM:
Delphi-Quellcode:
function NetUserEnum(
  const servername: LPCWSTR;
  const level: DWORD;
  const filter: DWORD;
  const bufptr: Pointer;
  const prefmaxlen: DWORD;
  var entriesread: DWORD;
  var totalentries: DWORD;
  const resume_handle: PDWORD
 ): NET_API_STATUS; stdcall;
Ich habe mir bereits Christian's Definition aus dem Ursprungsthread angesehen. Allerdings kann ich damit nix anfangen. Darum bitte ich euch mir hier nochmal zu helfen, denn ich steige nicht mehr durch.
Nun aber mein Source (nachdem ich alles in eine Funktion schreiben wollte, ging nix mehr):
Delphi-Quellcode:
procedure ListAllUsers(hTreeView: DWORD; hMasterParent: Cardinal; var iEntriesRead: Cardinal);
type
  PUSER_INFO_0 = ^_USER_INFO_0;
// PUSER_INFO_11 = ^_USER_INFO_11; <= für später...
var
  aTempIStruct: TTVInsertStruct;
  aUserBuffer, aWorkBuffer: PUSER_INFO_0;
  dwEntriesRead: Cardinal;
  i: integer;
  sTemp: string;
begin
  if NetUserEnum(nil, 0, FILTER_NORMAL_ACCOUNT, @aUserBuffer, MAX_PREFERRED_LENGTH,
                 dwEntriesRead, dwEntriesRead, nil) = NERR_SUCCESS then begin
    aWorkBuffer := aUserBuffer;
    for i:=1 to dwEntriesRead do begin
      aTempIStruct.hParent := Pointer(hMasterParent);
      sTemp := aWorkBuffer.usri0_name;
      aTempIStruct.item.pszText := @sTemp[1];
      SendMessage(hTreeView, TVM_INSERTITEM, 0, integer(@aTempIStruct));

      inc(aWorkBuffer, sizeOf(PUSER_INFO_0));
    end;
  end;
  NetAPIBufferFree(aUserBuffer);
end;
So, wenn ich nun ausführe: Es gibt ne saftige AccessViolation mit folgendem Inhalt:
Code:
---------------------------
Application Error
---------------------------
Exception EAccessViolation in module OSInfo.exe at 000037C3.
Access violation at address 004037C3 in module 'OSInfo.exe'. Read of address BAADF00D.
---------------------------
OK  
---------------------------
Dann wird das Programm zurückgesetzt und Ende.

Was mache ich nur falsch.

Chris
  Mit Zitat antworten Zitat