ReadDirectoryChangesW --> ERROR_NOACCESS
ReadDirectoryChangesW --> ERROR_NOACCESS
Hallo,
das ist hier jetzt mein erster Beitrag, also bitte nicht schlagen falls meine frage einfach nur dämlich ist^^
Ich weiß einfach nicht mehr weiter...
Mein Problem:
Ich habe eine Komponente die ich im Netz gefunden habe (TDirMonitor), die für Delphi war auf Lazarus geportet. Unter der x64 Version von Lazarus lief sie auch, aber nun unter der x86 leider nicht mehr.
Ich bekomme immer false zurück geliefert und GetLastError zeigt mir die 998 (ERROR_NOACCESS). Laut http://msdn.microsoft.com/en-us/library ... 85%29.aspx" onclick="window.open(this.href);return false; liegt das wohl an der falschen Puffergröße ("ReadDirectoryChangesW fails with ERROR_NOACCESS when the buffer is not aligned on a DWORD boundary."). Ich habe es mit verschiedenen Größen ausprobiert, erhalte aber immer die gleiche Fehlermeldung. Habe es auch schon mit Admin rechten versucht, leider auch ohne Erfolg. Momentan ist der Puffer auf 1024 Byte eingestellt. Da der Quelltext mir etwas zu lang ist um ihn hier zu Posten habe ich das Projekt mal angehängt. Hat jemand eine Idee woran dies liegen könnte? Ich danke euch schlauen Köpfen schon mal im voraus!
System:
Win7 x64
Lazarus 0.9.30.4 32bit
das ist hier jetzt mein erster Beitrag, also bitte nicht schlagen falls meine frage einfach nur dämlich ist^^
Ich weiß einfach nicht mehr weiter...
Mein Problem:
Ich habe eine Komponente die ich im Netz gefunden habe (TDirMonitor), die für Delphi war auf Lazarus geportet. Unter der x64 Version von Lazarus lief sie auch, aber nun unter der x86 leider nicht mehr.
Ich bekomme immer false zurück geliefert und GetLastError zeigt mir die 998 (ERROR_NOACCESS). Laut http://msdn.microsoft.com/en-us/library ... 85%29.aspx" onclick="window.open(this.href);return false; liegt das wohl an der falschen Puffergröße ("ReadDirectoryChangesW fails with ERROR_NOACCESS when the buffer is not aligned on a DWORD boundary."). Ich habe es mit verschiedenen Größen ausprobiert, erhalte aber immer die gleiche Fehlermeldung. Habe es auch schon mit Admin rechten versucht, leider auch ohne Erfolg. Momentan ist der Puffer auf 1024 Byte eingestellt. Da der Quelltext mir etwas zu lang ist um ihn hier zu Posten habe ich das Projekt mal angehängt. Hat jemand eine Idee woran dies liegen könnte? Ich danke euch schlauen Köpfen schon mal im voraus!
System:
Win7 x64
Lazarus 0.9.30.4 32bit
- Dateianhänge
-
- LazDirMon.rar
- (7.26 KiB) 105-mal heruntergeladen
Zuletzt geändert von doctor-x am Fr 7. Dez 2012, 19:18, insgesamt 1-mal geändert.
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
So, nachdem hier keiner eine Idee hatte hab ich den Fehler trotzdem gefunden....
manchmal kann ich ja so was von große Tomaten auf den Augen haben^^
Ich habe vergessen stdcall; in der Funktionsdefinition vergessen.
Nur eigenartig das es mal funktioniert hat... naja. jetzt geht es jedenfalls.
manchmal kann ich ja so was von große Tomaten auf den Augen haben^^
Ich habe vergessen stdcall; in der Funktionsdefinition vergessen.
Nur eigenartig das es mal funktioniert hat... naja. jetzt geht es jedenfalls.
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Hallo,
wo muss stdcall definiert sein? Ich bekomme den Fehler nicht weg.
Viele Grüße
Konrad
wo muss stdcall definiert sein? Ich bekomme den Fehler nicht weg.
Viele Grüße
Konrad
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Habe im ersten beitrag mal die Zip-Datei aktualisiert.
Ich hoffe es funktioniert jetzt auch bei Ihnen
MfG
Ich hoffe es funktioniert jetzt auch bei Ihnen
MfG
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Funktioniert perfekt!
Danke!
Danke!
-
- Beiträge: 43
- Registriert: Do 6. Dez 2012, 21:55
- OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0)
- CPU-Target: 64Bit
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Hallo,
ich habe da mal ein Problem.
Ich habe auch die DirMonitor Erweiterung im Internet gefunden. Diese ließ sich auch problemlos in Lazarus einbinden. Nun möchte ich die Erweiterung benutzen.
Diese kann ich in meine Form ziehen und auch alle Einstellungen ändern. (Objektinspektor)
Danach habe mir auch einen Button gebaut, mit dem ich die Funktion ausführen bzw. Stoppen kann.
In der Onchange Anweisung ist der Befehl Messagebox('Geht!') eingetragen.
Wenn ich jetzt mein Programm Starte und die Funktion einschalte über den Butten, sehe ich im Taskmanager, das diese Funktion meinen Arbeitsspeicher linear (45°) zumüllt und ein Kern meiner CPU auslastet wird.
Desweiteren kann ich in dem Ordner änder was ich möchte doch die Anwendung reagiert gar nicht darauf.
Anbei die LazDirMon, die ich verwende. Die hier im Beitrag war kann ich leider nicht richtig installieren. Es kommt eine Fehlermeldung, das Lazarus instabil wird und der Reiter für diese Funktion ist nicht vorhanden.
Hat jemand eine Idee, was ich falsch mache?
Beste Grüße
Vazili
ich habe da mal ein Problem.
Ich habe auch die DirMonitor Erweiterung im Internet gefunden. Diese ließ sich auch problemlos in Lazarus einbinden. Nun möchte ich die Erweiterung benutzen.
Diese kann ich in meine Form ziehen und auch alle Einstellungen ändern. (Objektinspektor)
Danach habe mir auch einen Button gebaut, mit dem ich die Funktion ausführen bzw. Stoppen kann.
In der Onchange Anweisung ist der Befehl Messagebox('Geht!') eingetragen.
Wenn ich jetzt mein Programm Starte und die Funktion einschalte über den Butten, sehe ich im Taskmanager, das diese Funktion meinen Arbeitsspeicher linear (45°) zumüllt und ein Kern meiner CPU auslastet wird.
Desweiteren kann ich in dem Ordner änder was ich möchte doch die Anwendung reagiert gar nicht darauf.
Anbei die LazDirMon, die ich verwende. Die hier im Beitrag war kann ich leider nicht richtig installieren. Es kommt eine Fehlermeldung, das Lazarus instabil wird und der Reiter für diese Funktion ist nicht vorhanden.
Hat jemand eine Idee, was ich falsch mache?
Beste Grüße
Vazili
- Dateianhänge
-
- LazDirMon.zip
- (3.83 MiB) 88-mal heruntergeladen
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Ich habe keine Ahnung von der Geschichte und auch kein Windows zur Hand.
Wo ist das in deiner Unit1?
Und wie kommst du denn darauf?
vazili_Zaitzef hat geschrieben:Danach habe mir auch einen Button gebaut, mit dem ich die Funktion ausführen bzw. Stoppen kann.
Wo ist das in deiner Unit1?
Und wie kommst du denn darauf?
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
readdirectorychangesw();
end;
-
- Beiträge: 43
- Registriert: Do 6. Dez 2012, 21:55
- OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0)
- CPU-Target: 64Bit
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Hallo,
diese Funktion benötige ich eigentlich nicht, da ich die Komponente benutze. (Die Komponente benutzt allerdings diese Funktion. Da es hier um diese Komponente geht, habe ich mich hier einfach mal dran gehängt.)
Um das Problem zu verdeutlichen, ist im Anhang eine Datei mit einem Bild von meinem Problem.
Der Quellcode ist auch zu sehen. Der Quelltext ist allerdings nur ein "Zweizeiler und wird später aufgebohrt."
diese Funktion benötige ich eigentlich nicht, da ich die Komponente benutze. (Die Komponente benutzt allerdings diese Funktion. Da es hier um diese Komponente geht, habe ich mich hier einfach mal dran gehängt.)
Um das Problem zu verdeutlichen, ist im Anhang eine Datei mit einem Bild von meinem Problem.
Der Quellcode ist auch zu sehen. Der Quelltext ist allerdings nur ein "Zweizeiler und wird später aufgebohrt."
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Warum ist das auskommentiert?
Code: Alles auswählen
// GetQueuedCompletionStatus( parent.FCompletionPort, numBytes, state, parent.FPOverlapped, INFINITE);
-
- Beiträge: 43
- Registriert: Do 6. Dez 2012, 21:55
- OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0)
- CPU-Target: 64Bit
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Die Komponente ist ja nicht von mir. Daher wußte ich das nicht.
Ich habe jetzt die Klammer entfernt und er erneut ausprobiert. Jetzt kommt ein Fehler der mir sagt :
"LongWord" expected "QWord"
...
ich finde aber nicht, wie ich das umwandeln könnte...
Ich habe jetzt die Klammer entfernt und er erneut ausprobiert. Jetzt kommt ein Fehler der mir sagt :
"LongWord" expected "QWord"
...
ich finde aber nicht, wie ich das umwandeln könnte...
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Für Win 32Bit funktioniert der Code oben in LazDirMon.rar.
Für Win 64Bit hängt es irgendwie.
EDIT: Ausserhalb des Debuggers geht es auch mit 64bit.
Für Win 64Bit hängt es irgendwie.
EDIT: Ausserhalb des Debuggers geht es auch mit 64bit.
-
- Beiträge: 43
- Registriert: Do 6. Dez 2012, 21:55
- OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0)
- CPU-Target: 64Bit
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Hallo und,
vielen vielen Dank Theo für Deine Hilfe!!!!
In der Tat, mit der 32 Bit Version von Lazarus funktioniert diese Komponente echt gut. Solange man nur einen Hauptordner mit Unterordnern hat. Sobald es weiter verzweigt wird, klappt das mit der Abfrage leider nicht mehr. (Es werden keine Änderungen mehr erkannt)
Hast Du dafür zufällig auch noch eine Lösung?
Meine Programmierkenntnisse sind dafür noch zu begrenzt...
Beste Grüße
Update: Das war nur ein Problem wegen der neuinstallation. Heute funktioniert das perfekt!
vielen vielen Dank Theo für Deine Hilfe!!!!
In der Tat, mit der 32 Bit Version von Lazarus funktioniert diese Komponente echt gut. Solange man nur einen Hauptordner mit Unterordnern hat. Sobald es weiter verzweigt wird, klappt das mit der Abfrage leider nicht mehr. (Es werden keine Änderungen mehr erkannt)
Hast Du dafür zufällig auch noch eine Lösung?
Meine Programmierkenntnisse sind dafür noch zu begrenzt...
Beste Grüße
Update: Das war nur ein Problem wegen der neuinstallation. Heute funktioniert das perfekt!
Zuletzt geändert von vazili_Zaitzef am Do 1. Mai 2014, 10:34, insgesamt 1-mal geändert.
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Wie gesagt, ich habe keine Ahnung von dieser Sache.
MSDN kannst du selber lesen: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
MSDN kannst du selber lesen: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
-
- Beiträge: 43
- Registriert: Do 6. Dez 2012, 21:55
- OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0)
- CPU-Target: 64Bit
Re: ReadDirectoryChangesW --> ERROR_NOACCESS
Wie eben schon erwählt, war das nur ein Fehler wegen der Neuinstallation. Heute funktioniert die Komponente perfekt.
Die MSDN habe ich mir auch durchgelesen doch davon verstehe ich nicht wirklich viel...
Dafür bin ich noch viel zu schlecht.
Die MSDN habe ich mir auch durchgelesen doch davon verstehe ich nicht wirklich viel...
Dafür bin ich noch viel zu schlecht.