System-Callbacks
-
Hi,
man hat mir gesagt, es gäbe eine Möglichkeit für nahezu jede beliebige WinAPI-Funktion eine Callback zu definieren, die dann aufgerufen wird, wenn mein oder ein anderes Programm diese WinAPI-Funktion aufruft.
Zwei Fragen:
1.) Stimmt das?
2.) Falls ja: Wie heisst die Funktion?Habe jetzt ne halbe Stunde erfolglos versucht was im Netz zu finden...
-
Ich vermute mal das ist gemeint:
Platform SDK schrieb:
The SetWindowsHookEx function installs an application-defined hook procedure into a hook chain. You would install a hook procedure to monitor the system for certain types of events. These events are associated either with a specific thread or with all threads in the same desktop as the calling thread.
-
Ne, laut dessen Aussage ist es kein Hook...
Ich hätte es auch mit Hooks gemacht, er hat dann gesagt, da gäbe es noch was anderes...
-
dEUs schrieb:
Ne, laut dessen Aussage ist es kein Hook...
Ich hätte es auch mit Hooks gemacht, er hat dann gesagt, da gäbe es noch was anderes...man kann als Administrator den fremden prozesspeicher verändern und die sprungziele verbiegen oder sowas. oder einfach den code am anfang der funktion durch code von dir überschreiben, der in deine funktion springt. geht aber angebnich nicht mit socket-funktionen, weil die nochmal extrem sicherheit eingebaut kriegt haben und checken, daß sie am richtigen platz stehen und unverändert sind.
oder dem kumpel eigene dlls unterjubeln, die sich genauso verhalten wie die von MS (einfach alle weiterleiten, außer den gehookten funktionen).
-
Ja, dass es mit Hooks geht, weiss ich schon

Aber laut seiner Aussage gibt es eine einfachere Möglichkeit. Mir geht es speziell um Dateisystem-Funktionen.
-
dEUs schrieb:
Ja, dass es mit Hooks geht, weiss ich schon

Aber laut seiner Aussage gibt es eine einfachere Möglichkeit. Mir geht es speziell um Dateisystem-Funktionen.auf codeguru.com ist afair ein treiber, der plattenzugriffe mitloggt. kann aber sein, daß er nur für win95 geht.
-
Danke ich guck mal.
Noch ne Frage zur Idee die hinter der Frage steckt:
Mir geht das Suchen auf meiner Platte zu langsam. Ich dachte mir, es wäre doch ne Idee, einfach alle Dateien, die auf der Platte sind in eine SQL-Datenbank zu schreiben (ohne Inhalt, nur Name, Pfad und Attribute) und dann in Zukunft darin zu suchen. Meint ihr das klappt so, wie ich mir das vorstell?EDIT:
Argl, wer kam denn auf die blöde Idee mit dem Menü? Ich hab da jedesmal Probleme...
-
ICh denke, ich hab Funktionen gefunden, die mir da helfen:
FindFirstChangeNotification
FindNextChangeNotification
FindCloseChangeNotification
ReadDirectoryChangesWScheinen genau die Infos zu sein, die ich brauch.
-
dEUs schrieb:
Mir geht das Suchen auf meiner Platte zu langsam.
windows hat doch dazu einen indexdienst.
Ich dachte mir, es wäre doch ne Idee, einfach alle Dateien, die auf der Platte sind in eine SQL-Datenbank zu schreiben (ohne Inhalt, nur Name, Pfad und Attribute) und dann in Zukunft darin zu suchen. Meint ihr das klappt so, wie ich mir das vorstell?
ich hab ne zeit lang ne datei dir.txt in der root jeder platte gehabt.
erstellen mit "dir . /S/B > dir.txt"FindFirstChangeNotification
dann muss aber dein wächter immer mitlaufen.
schließ ab besten gleich bem wächer schrott aus. /Debug/ und /Release/ und *.tmp und *.ncb und so.
-
volkard schrieb:
dEUs schrieb:
Mir geht das Suchen auf meiner Platte zu langsam.
windows hat doch dazu einen indexdienst.
Bei mir ist bei jedem Ordner in den Erweiterten Attributen ein Häckchen bei "Inhalt für schnelle Dateisuche indizieren". Zu bringen scheint es nichts.
volkard schrieb:
ich hab ne zeit lang ne datei dir.txt in der root jeder platte gehabt.
erstellen mit "dir . /S/B > dir.txt"Naja, is halt net immer aktuell, obwohl das im Grunde ja egal ist. Aber wie ich mich kenn würd ich die Datei immer nur erstellen, wenn ich was suchen würde -> sinnlos.
volkard schrieb:
FindFirstChangeNotification
dann muss aber dein wächter immer mitlaufen.
Ja, meinen Wächter würde ich als Dienst implementieren.
volkard schrieb:
schließ ab besten gleich bem wächer schrott aus. /Debug/ und /Release/ und *.tmp und *.ncb und so.
Ja, sowas würde ich dann natürlich machen. Vermutlich mit Optionsdialog, dass jeder seinen eigenen Müll raus lassen kann.
-
Er könnte ja zb am Lese/Schreib-Interrupt lauschen...
-
dEUs schrieb:
Ja, sowas würde ich dann natürlich machen. Vermutlich mit Optionsdialog, dass jeder seinen eigenen Müll raus lassen kann.
bitte mach ein ini-file. spart dir arbeit beim coden und mir beim benutzen.
-
Oh ja, gute Idee. Bin eh nicht so n GUI-Fan.
-
dEUs schrieb:
Bei mir ist bei jedem Ordner in den Erweiterten Attributen ein Häckchen bei "Inhalt für schnelle Dateisuche indizieren". Zu bringen scheint es nichts.
drück mal
Win+d //desktop anzeigen
F3 //suchen
mach ne suche, die nicht klappt und klick dirch durch. bald siehste den knopf
"Bevorzugte Einstellungen ändern"
Da muß an sein "Indexdienst aktiviert"
so, und ich probiere das jetzt mal aus. (mußte erst den indexdienst anschalten).
ist extrem lahm. extrem extrem lahm. kein vergleich zu linux mit find. naja, mal warten, der baut bestimmt nen index auf, wenn ich 10 minuten lang den rechner idlen lasse.
-
in 'systemsteuerung->einstellungen->verwaltung->computerverwaltung->dienste und amwendungen->indexdienst' könnte ihr auch einstellen welche verzeichnisse der aufnehmen soll.
volkard schrieb:
naja, mal warten, der baut bestimmt nen index auf, wenn ich 10 minuten lang den rechner idlen lasse.
dauert sogar noch länger...
-
net schrieb:
in 'systemsteuerung->einstellungen->verwaltung->computerverwaltung->dienste und amwendungen->indexdienst' könnte ihr auch einstellen welche verzeichnisse der aufnehmen soll.
als entwickler muß man *.obj und *.exe und *.tmp ausschalten. falls das geht. falls nixht, muß man auf den indexdienst verzichten. der hängt sich nämlich rein und untersucht frisch erstellte files und wenn ich das file (nur 10M ziufallszahlen) löschen will, blockt die löschende anwendung. die entwicklungsperformance geht total in den keller mit so nem mist.
-
volkard schrieb:
als entwickler muß man *.obj und *.exe und *.tmp ausschalten. falls das geht. falls nixht, muß man auf den indexdienst verzichten. der hängt sich nämlich rein und untersucht frisch erstellte files und wenn ich das file (nur 10M ziufallszahlen) löschen will, blockt die löschende anwendung. die entwicklungsperformance geht total in den keller mit so nem mist.
der läuft mit 'ner superniedrigen priorität und springt erst mit einer ziemlichen verzügerung an (deshalb ist der indexaufbau auch so lahm). ich glaub' nicht dass der die files, die er untersucht, mit exklusivem zugriff öffnet. hast du irgendwelche negativen effekte bemerkt (ausser der fetten datei die er anlegt, wenn man die ganze platte indiziert)?
-
net schrieb:
hast du irgendwelche negativen effekte bemerkt (ausser der fetten datei die er anlegt, wenn man die ganze platte indiziert)?
ja. als ich mit fetten temp-dateien rumgemacht habe, hat er mich wirklich schrecklich geärgert. nein, er öffnet nicht exclusiv, jeder darf lesen und schreiben. aber löschen nicht! die anwendung hat auch kein "darf nicht löschen" gekriegt, sondern hing einfach, bis der indexdienst sie freigab. egal, ob explorer, far file manager oder del.
-
Ich hab den Indexdienst auch aus, der ist echt zu nichts zu gebrauchen ;/
-
geeky schrieb:
Ich hab den Indexdienst auch aus, der ist echt zu nichts zu gebrauchen ;/
ich setze den gezielt auf einige verzeichnisse an. die ganze platte sollte man besser nicht indizieren