AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateisperre freigeben

Ein Thema von mumu · begonnen am 8. Sep 2005 · letzter Beitrag vom 21. Mär 2006
Antwort Antwort
Seite 6 von 6   « Erste     456   
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#51

Re: Dateisperre freigeben

  Alt 18. Mär 2006, 12:29
also ich hab jetzt schonmal folgendes hinbekommen:
ich hab mir ein kleines delphi test programm geschrieben, dass mir eine Datei (hier C:\Test.txt) exklusiv öffnet. ich hab es jetzt hinbekommen mit code aus nebbets buch mir alle geöffneten handles eines projekts anzeigen zu lassen.
dazu öffne ich den Prozess mit OpenProcess, dann ruf ich ZwQuerySystemInformation auf, um die handle informationen zu bekommen mit ZwDuplicateObject dupliziere ich den Handle und mit ZwQueryObject les ich informationen über das Handle aus.

Somit hab ich mir mal nur die File Handles rausgefiltert.

Komischer weise sind das aber immer ganz ganz viele, jedoch wird immer nur das aktuelle Verzeichnis in dem das Programm läuft gesperrt und die geöffnete Datei (Test.txt). jedoch gibt es diese zwei objecte mit jede menge handles (siehe Anhang: all_file_handles.txt)

mein test programm hat jetzt beispielsweise die ProzessId: B84

wenn man in der all_file_handles.txt schaut sieht man genau folgende zwei einträge mit der prozessId: B84
Code:
Prozess-ID: b84
Object-Address: FD697228
Handle: c
GrantedAccess: 100020
Flags: 2
Attributes: 2
HandleCount: 1
PointerCount: 1
ObjectTypeInformation-Name: File
ObjectNameInformation-Name: \Device\HarddiskVolume1\

Prozess-ID: b84
Object-Address: 821D9C60
Handle: 4c
GrantedAccess: 120089
Flags: 0
Attributes: 0
HandleCount: 1
PointerCount: 1
ObjectTypeInformation-Name: File
ObjectNameInformation-Name: \Device\HarddiskVolume1\Test.txt
meine frage ist jetzt, warum bekomme ich hier so viele handles??? und wieso gehören nur die zwei zum prozess? was sind das dann für andere handles?

ich bin jetzt auch schon so weit, dass ich das handle an den treiber übergeben kann. nur wie muss ich jetzt vorgehen, wenn ich die dateisperre auf treiber basis lösen will? was muss ich da aufrufen der reihe nach? ich denk mal ich hab eigentlich alle informationen.

vielen dank
gruß
Angehängte Dateien
Dateityp: txt all_file_handles_185.txt (6,0 KB, 33x aufgerufen)
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#52

Re: Dateisperre freigeben

  Alt 18. Mär 2006, 13:16
Zitat von mumu:
Komischer weise sind das aber immer ganz ganz viele
Etliche Dinge werden als 'Dateiobjekte' abgebildet (Mailslots, Pipes, Festplatten, Dateien, ...).
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#53

Re: Dateisperre freigeben

  Alt 18. Mär 2006, 14:28
Siehe Nico's Antwort und dann gibt es noch die Kernelobjekte, die eben in jedem Prozess eingeblendet sind. Wie es bei vererbten Handles aussieht, weiß ich im Moment garnicht.
  Mit Zitat antworten Zitat
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#54

Re: Dateisperre freigeben

  Alt 18. Mär 2006, 15:11
ja gut, dass würde auch sinn machen, dass teilweise handles von anderen prozessen eingeblendet werden. nur wie man in der all_file_handles.txt sieht, sind es immer pro prozess id 2 handles, einer auf das ausführungsverzeichnis und einer auf meine geöffnete datei. also ca. 20 verschiedene prozess-ids mit immer den genau gleichen 2 handles.

wie muss ich jetzt vorgehen, wenn ich die dateisperre lösen will? Muss ich da einfach das handle schließen? ich bin schon soweit, dass ich da zu schließende handle an den treiber übergeben kann.
  Mit Zitat antworten Zitat
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#55

Re: Dateisperre freigeben

  Alt 21. Mär 2006, 13:18
Zitat von mumu:
ja gut, dass würde auch sinn machen, dass teilweise handles von anderen prozessen eingeblendet werden. nur wie man in der all_file_handles.txt sieht, sind es immer pro prozess id 2 handles, einer auf das ausführungsverzeichnis und einer auf meine geöffnete datei. also ca. 20 verschiedene prozess-ids mit immer den genau gleichen 2 handles.

wie muss ich jetzt vorgehen, wenn ich die dateisperre lösen will? Muss ich da einfach das handle schließen? ich bin schon soweit, dass ich da zu schließende handle an den treiber übergeben kann.
versteht ihr was ich da mein? wär klasse, wenn mir noch jemand helfen könnte
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 6   « Erste     456   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz