Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#19

AW: Ini ohne IniFiles Project (WinApi)

  Alt 28. Aug 2020, 19:10
Zitat:
für den produktiven Einsatz wird es dann vielleicht doch spannend, ob das selbst geschriebene FileExists auch auf Netzwerkpfaden funktioniert und derlei mehr.
Muss da nochmal drauf eingehen was ist da so schwierig? Und oder spannend.

1.Ich prüfe erst einmal ob es sich um einen Netzwerkpfad handelt.
Dazu vergleiche ich auf "\\" im Pfad.

2.Anschließend prüfe ich ob es sich um ein Remote Laufwerk handelt
über GetDriveType = DRIVE_REMOTE

3. Dann verwende ich WNetGetConnection mit dem Flag ERROR_MORE_DATA
falls der Buffer zu schmal ist alloziere ich einen entsprechenden der dann passt.
Über WNetGetConnection erhält man den UNC Pfad von einem gemappten Laufwerk. (Nur zur Vervollständigung)

4.Gibt der nächst Aufruf von WNetGetConnection NO_ERROR zurück dann wurde der Pfad gefunden.

5.Das alles garantiert mir aber nicht das ich die Datei auch lesen kann.
Also muss ich einen ping absetzen der mir garantiert das der Port auch geöffnet ist um die Datei lesen zu können.
"IsPortAvailable"

6. Wenn dann der Pfad und die Datei existiert "PathFileExists" ist die Rückgabe true.

Wo ist nun das Problem eine Function gleich "FileExists" für ein Netzwerkpfad zu erstellen?
Und ja habe nichts neu erfunden wie schon gesagt ist alles vorhanden.

Habe jetzt nur mal einen möglichen Vorgang beschrieben Code gibt es nicht.
Jeder nutzt halt eine für sich angepasste variante von FileExists die meisten die Vorgekaute.
Ob es jetzt mit Portprobe Probleme mit der Firewall oder anderen Sicherheitssuiten gibt kann ich nicht garantieren muss man halt testen.

Er könnte nun sein _FileExists entsprechend meiner Vorgehensweise anpassen und schon klappt das mit deinen Netzwerkpfaden.

Nachtrag:
Ping ist aber kein Garant das der Server/Client auch wirklich hochgefahren ist.
Deswegen nutze ich eine Portprobe und schau ob ein bestimmter Port vom Server/Client erreichbar ist.
Ist der Port erreichbar ist der Server auch hochgefahren und dann sollte auch der Ordner\Datei erreichbar sein.

Geändert von venice2 (28. Aug 2020 um 20:17 Uhr)
  Mit Zitat antworten Zitat