Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

NetDFSEnum - Problem mit LPBYTE

  Alt 23. Mär 2008, 10:59
Hallo

Ich habe ein kleines Problem mit der Übergabe des LPBYTE-Parameters innerhalb der Funktion NetDFSEnum.

Die Deklaration in der JwaLmDFS sieht so aus:
function NetDfsEnum(DfsName: LPWSTR; Level, PrefMaxLen: DWORD; var Buffer: LPBYTE; EntriesRead, ResumeHandle: LPDWORD): NET_API_STATUS; stdcall; Nun wollte ich mal schauen, wie es geht und bekomme ich zwei Fehlermeldungen.

1. die tatsächlichen und formalen Var-Parameter müssen übereinstimmen.
2. Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden.

Delphi-Quellcode:
procedure TForm1.btnDFSClick(Sender: TObject);
var
  p, pData : DFS_INFO_3;
  ps : DFS_STORAGE_INFO;
  er,
  hResume : LPDWORD;
  res,
  I, j : DWORD;
  Domain : PWideChar;
begin
  StringToWideChar(FDomainName, Domain, Length(FDomainName));
  res := NetDFSEnum(Domain, 3, MAX_PREFERRED_LENGTH, @pData, @er, @hResume); // <- 1. Meldung
  while (res = ERROR_SUCCESS) do
  begin
    p := pData;
    NetApiBufferFree(@pData);
    res := NetDFSEnum(Domain, 3, MAX_PREFERRED_LENGTH, LPBYTE(@pData), @er, @hResume); // <- 2. Meldung
  end;
end;
Hat jemand ein Tipp?

Wenn man statt
Delphi-Quellcode:
var
  p, pData : DFS_INFO_3;
ein
Delphi-Quellcode:
var
  p, pData : PDFS_INFO_3;
nimmt und es dann so Aufruft
res := NetDFSEnum(Domain, 3, MAX_PREFERRED_LENGTH, LPBYTE(pData), @er, @hResume); klappt es auch mit dem LPBYTE-Parameter.
  Mit Zitat antworten Zitat