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.