![]() |
ReadDirectoryChanges() API funktioniert nicht mit VMWare Shared Folders
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab ein sehr ungewöhnliches Problem entdeckt. Ich hoffe jemand kann mir dabei helfen eine Lösung zu finden.
Es geht um die Win32 API Funktion ReadDirectoryChanges. Hier wird sie von der (Delphi 5-7) Komponente TDirMon verwendet (angehängt Komponente + Source + Minimalbeispiel + Exe). Diese ist dazu da die Änderungen in einem Folder zu überwachen (Event bei einer Änderung). Der problematische Code:
Delphi-Quellcode:
Es gibt keinerlei Probleme mit einer normalen Installation von Windows XP, 7, 8.1 und 10 (alle getestet).
if not ReadDirectoryChanges(FDirectoryHandle, @FNotificationBuffer, SizeOf(FNotificationBuffer), FWatchSubTree, FNotifyFilter, @FBytesWritten, @FOverlapped, nil) then
begin CloseHandle(FDirectoryHandle); FDirectoryHandle := 0; CloseHandle(FCompletionPort); FCompletionPort := 0; raise EDirMonError.Create(SysErrorMessage(GetLastError)); exit; end; Ist eines dieser Betriebssysteme in einer VMWare VM ändert sich die Sache. Überwacht man ein lokales (d.h. VM-Eigenes) Verzeichnis gibt es keine Probleme. Versucht man jedoch die Überwachung auf einen Shared-Folder (also eines auf dem Host von der VM aus, z.B: z:\c\daten) zu legen gibt es eine Exception und zwar: WindowsXP x86: keine Exception Windows 7 x64: Exception: incorrect function Windows 8.1 x64: Exception: incorrect function Windows 10 x64: Exception: incorrect function Wie gesagt, das Problem existiert nur wenn man die Funktion auf einen VMWare Shared Folder aufruft. Ich wäre für Tips dankbar! |
AW: ReadDirectoryChanges() API funktioniert nicht mit VMWare Shared Folders
Das kann an vielen Dingen hängen.
Diese Funktionalität muß vom Dateisystemtreiber, bzw. vom Protocoltreiber und von der Gegenstelle (bei Netzwerken/Protokollen) unterstützt werden, bzw. die Funktionaliät kommt von Denen. Vermutung: Bug in den Treibern des virtuellen Netzwerkadapters und oder im OS (Host oder Virtuell) Hast du es denn auch schonmal über Netzwerkfreigaben auf reeller Hardware probiert? |
AW: ReadDirectoryChanges() API funktioniert nicht mit VMWare Shared Folders
Ja, Netzwerkfreigaben mit gleichen Verzeichnis funktionieren problemlos. Meine Vermutung/Befürchtung war schon dass bei VMWare Shared Folders ReadDirectoryChanges() nur unter 32bit implementiert ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 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