Wie erkennen Sie, welcher Prozess ein geöffnetes Handle für eine Datei hat? Insbesondere, wie machen Sie das programmatisch?Wem gehört ein Datei-Handle in Windows?
Antwort
Möglicherweise gibt es eine API dafür, ich weiß es nicht. Wenn ja, kann es eine API im Kernel geben.
Eine andere Möglichkeit (Entschuldigung, vage zu sein, aber ich beantworte dies jetzt, falls niemand eine bessere Antwort postet) ist, dass es keine (dokumentierte) API gibt, und dass die Programme es tun, indem sie es tun mit undokumentiertem Wissen über den Inhalt des Handles und/oder des Speichers, auf den der Handle (wenn er als Pointer behandelt wird) zeigt: Ich habe zum Beispiel A Process' Kernel Object Handle Table gefunden, und ich denke, dass (die Leute sagen, dass sie umgekehrt waren). manipulierte undokumentierte Speicherstrukturen) erinnere ich mich an das Lesen im Softice-Handbuch vor Jahren.
Ein Ort für weitere Informationen könnte File System Filter Drivers sein.
Ein anderer (vielleicht besserer) Weg könnte sein, depends
oder dumpbin /imports
zu verwenden, um zu sehen, welche APIs das relevante Sysinternals-Programm verwendet.
Vorausgesetzt, dass er wissen möchte, wie dies programmatisch zu tun ist, ist dies * programmierbezogen und * gehört nicht zu den Serverfehlern. – ChrisW