![]() |
AV nach WNetGetUniversalName
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich bin mal wieder auf Eure Hilfe angewiesen.
Im Anhang der Source (Delphi 2009) zur einer kleinen Übung von mir: Es werden alle logischen Laufwerke in einem TreeView dargestellt. Unter anderem auch verbundene Netzwerk-Laufwerke. Um den UNC-Pfad zu ermitteln benutze ich WNetGetUniversalName:
Delphi-Quellcode:
doch Leider kommt es nach dem verlassen der Procedur zu einer AV und ich habe keinen Schimmer warum.
procedure TRemoteDrive.ReadDriveInfo;
var Buffer: UNIVERSAL_NAME_INFO; Size : DWORD; begin FDeviceType := FILE_DEVICE_NETWORK; Size := 1024; try if WNETGetUniversalName(PWideChar(FDriveLetter), UNIVERSAL_NAME_INFO_LEVEL, @Buffer, Size) = 0 then FRemotePath := Buffer.lpUniversalName; except end; end; Also wer Lust und Laune hat mal den Source zu testen, ich wäre jedenfalls für Tipps dankbar. VG Alter Mann |
AW: AV nach WNetGetUniversalName
Dein Buffer ist nur 4 Byte und deine angegebenen 1024.
Das Ergebnis ist ein Pufferüberlauf und da braucht man sich nicht wundern, wenn es auch mal knallt. Tipp: Schau mal ins MSDN und vorallem auf das Beispiel. ![]() |
AW: AV nach WNetGetUniversalName
Delphi-Quellcode:
Quelle:
function GetUNCName(const LocalPath: string): string;
var BufferSize: DWord; DummyBuffer: Byte; Buffer: Pointer; Error: DWord; begin BufferSize := 1; WNetGetUniversalName(PChar(LocalPath), UNIVERSAL_NAME_INFO_LEVEL, @DummyBuffer, BufferSize); Buffer := AllocMem(BufferSize); try Error := WNetGetUniversalName(PChar(LocalPath), UNIVERSAL_NAME_INFO_LEVEL, Buffer, BufferSize); if Error <> NO_ERROR then begin SetLastError(Error); RaiseLastWin32Error; end; Result := PUniversalNameInfo(Buffer)^.lpUniversalName finally FreeMem(Buffer); end; end; ![]() Keine Ahnung ob es funktioniert, da ich hier momentan kein Netzwerk zum Testen habe. |
AW: AV nach WNetGetUniversalName
Danke, das war es!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 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-2025 by Thomas Breitkreuz