![]() |
NetDFSEnum - Problem mit LPBYTE
Hallo
Ich habe ein kleines Problem mit der Übergabe des LPBYTE-Parameters innerhalb der Funktion NetDFSEnum. Die Deklaration in der JwaLmDFS sieht so aus:
Delphi-Quellcode:
Nun wollte ich mal schauen, wie es geht und bekomme ich zwei Fehlermeldungen.
function NetDfsEnum(DfsName: LPWSTR; Level, PrefMaxLen: DWORD; var Buffer: LPBYTE; EntriesRead, ResumeHandle: LPDWORD): NET_API_STATUS; stdcall;
1. die tatsächlichen und formalen Var-Parameter müssen übereinstimmen. 2. Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden.
Delphi-Quellcode:
Hat jemand ein Tipp?
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; Wenn man statt
Delphi-Quellcode:
ein
var
p, pData : DFS_INFO_3;
Delphi-Quellcode:
nimmt und es dann so Aufruft
var
p, pData : PDFS_INFO_3;
Delphi-Quellcode:
klappt es auch mit dem LPBYTE-Parameter.
res := NetDFSEnum(Domain, 3, MAX_PREFERRED_LENGTH, LPBYTE(pData), @er, @hResume);
|
Re: NetDFSEnum - Problem mit LPBYTE
So sollte es gehen, siehe Kommentare:
Delphi-Quellcode:
Allerdings kann ich nicht sagen, was DFS_INFO_3 ist - erwartet wird ja ein Bytepointer...
procedure TForm1.btnDFSClick(Sender: TObject);
var p, pData : DFS_INFO_3; ps : DFS_STORAGE_INFO; // er und hResume sind DWORDS, übergeben wird der Funktion jeweils ein Pointer auf diese DWORDS //daher die Fehlermeldung er, hResume : DWORD; res, I, j : DWORD; Domain : PWideChar; begin StringToWideChar(FDomainName, Domain, Length(FDomainName)); res := NetDFSEnum(Domain, 3, MAX_PREFERRED_LENGTH, @pData, @er, @hResume); while (res = ERROR_SUCCESS) do begin p := pData; NetApiBufferFree(@pData); res := NetDFSEnum(Domain, 3, MAX_PREFERRED_LENGTH, @pData, @er, @hResume); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz