Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
|
AW: Prozess finden, der Datei offen hat
4. Nov 2010, 14:51
Puh, mein früheres Ich
Aber Nico hat recht, und zwar hier:
Zitat von Olli:
ZwQuerySystemInformation und ZwQueryObject[...]
Der Treiber ist deswegen notwendig, weil die Abfrage des Namens eines Dateiobjektes (Dateien, Verzeichnisse, Pipes, MailSlots, ...) bei synchronisierten Objekten solange benötigt bis die aktuelle Operation abgeschlossen ist (und das kann ewig dauern). Da zum Beispiel der Service Control Manager (SCM) Pipes verwendet um mit Service-DLLs zu kommunizieren, gibt es eine Menge solcher Objekte. Zudem gibt es aus dem Benutzermodus keinen sicheren Weg um Dateien von Pipes und/oder MailSlots zu untercheiden. Der Treiber löst das erste Problem üblicherweise dadurch, dass er den IRP zur Abfrage des Objekts selbst erzeugt. Das zweite Problem kann ebenso im Treiber (mit Hilfe des IFS-Kits) gelöst werden (MailSlots oder Pipes sind an Flags erkennbar).
Kurz, für eine saubere Lösung kommt man nicht um einen Treiber herum.
... das war der Hasenfuß.
I stand corrected
Oliver "... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
|
|
Zitat
|