Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriff sperren (https://www.delphipraxis.net/11763-zugriff-sperren.html)

Killer 13. Nov 2003 12:12


Zugriff sperren
 
Hi wie kann ich den Zugriff auf einzelne Ordner, Laufwerke und Dateien sperren?

Das folgende hab ich in der WinHilfe gefunden:
Zitat:

The FSCTL_LOCK_VOLUME DeviceIoControl operation locks a volume. A locked volume can be accessed only through handles to the file object (*hDevice) that locks the volume.

dwIoControlCode = FSCTL_LOCK_VOLUME; // operation code
lpInBuffer = NULL; // pointer to input buffer; not used; must be NULL
nInBufferSize = 0; // size of input buffer; not used; must be zero
lpOutBuffer ; // pointer to output buffer; not used; must be NULL
nOutBufferSize ; // size of output buffer; not used; must be zero
lpBytesReturned ; // pointer to DWORD used by DeviceIoControl function


Parameters

lpInBuffer

Points to an input buffer. Not used with this operation. Set to NULL.

nInBufferSize

Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. Not used with this operation. Set to zero.

lpOutBuffer

Points to an output buffer. Not used with this operation. Set to NULL.

nOutBufferSize

Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. Not used with this operation. Set to zero.

lpBytesReturned

Pointer to a DWORD. This value cannot be NULL. Although the FSCTL_LOCK_VOLUME operation produces no output data and lpOutBuffer should be NULL, the DeviceIoControl function uses the variable pointed to by lpBytesReturned. After the operation, the value of this variable is without meaning.
Naja leider ist kein Beispiel dabei, ich weiß auch nicht, obs überhaupt die richtige Funktion wäre. Kann mir jemand helfen?

Christian Seehase 13. Nov 2003 19:04

Re: Zugriff sperren
 
Moin Killer,

unter welchem Betriebssystem willst Du welche Art des Zugriffs sperren?

Daniel B 13. Nov 2003 19:23

Re: Zugriff sperren
 
Läuft das wieder auf den gleichen Blödsinn raus? :warn:
http://www.delphipraxis.net/internal...ct.php?t=13254

Killer 14. Nov 2003 12:16

Re: Zugriff sperren
 
@Christian Seehase:

Als Betriebssystem möchte ich WinXP nehmen und Art des Zugriffs hmm, ich möchte einfach den Zugriff auf bestimmte Dateien und Ordner sperren können...

@Daniel B:

Nein tut es nicht. Der Grund dafür ist, dass wenn ich zb. in eine bestimmte Datei mit meinem Proggie was reinschreibe, dass man die nicht gleichzeitig öffnen kann, also Zugriff während der Laufzeit meines Programms sperren!

choose 14. Nov 2003 12:40

Re: Zugriff sperren
 
Zitat:

Zitat von Killer
Der Grund dafür ist, dass wenn ich zb. in eine bestimmte Datei mit meinem Proggie was reinschreibe, dass man die nicht gleichzeitig öffnen kann, also Zugriff während der Laufzeit meines Programms sperren!

Wenn ich Dich richtig verstehe, hättest Du gerne exklusiven Zugriff auf eine Datei, während Du aus ihr liest oder in sie schreibst. In der OH unter TFileStream (VCL) oder CreateFile (Win32) solltest Du fündig werden.

Killer 14. Nov 2003 15:43

Re: Zugriff sperren
 
Danke aber das weiß ich auch, dass ich mit einem Filestream exklusiven Zugriff auf eine Datei bekommen kann. Aber ich möchte ganze Ordner sperren und soweit ich weiß geht das mit einem Filestream nicht...

Luckie 14. Nov 2003 15:51

Re: Zugriff sperren
 
Zitat:

Zitat von Killer
Danke aber das weiß ich auch, dass ich mit einem Filestream exklusiven Zugriff auf eine Datei bekommen kann. Aber ich möchte ganze Ordner sperren und soweit ich weiß geht das mit einem Filestream nicht...

Wozu den ganzen Ordner sperren wenn du nur:
Zitat:

in eine bestimmte Datei mit meinem Proggie was reinschreibe, dass man die nicht gleichzeitig öffnen kann, also Zugriff während der Laufzeit meines Programms sperren!
Das machen willst?

Killer 14. Nov 2003 17:02

Re: Zugriff sperren
 
Naja ich möchte eigentlich keine Diskussion anzetteln, sondern möchte wissen, wie man einen Ordner sperren kann bzw. ob das möglich ist...

r_kerber 14. Nov 2003 17:12

Re: Zugriff sperren
 
Hallo K.....,

also bei mir verbleibt doch ein bitterer Beigeschmack. Wenn es völlig ausreichend ist einzelne Dateien zu sperren, dann ist das für einen gesamten Ordner nicht erforderlich.

choose 14. Nov 2003 17:21

Re: Zugriff sperren
 
Ich verstehe das auch nicht ganz.

Falls Du aber zusammengehörige Dateien erstellen/verändern willst, die konsistent bleiben müssen (zB PAS und DFM), könntest Du soetwas ähnliches wie PessimisticLocking bei Datenbanken (der Experte verzeih bitte!) realisieren, indem Du die Dateien nicht hintereinander öffnest, schreibst und schließst, sondern Dir zunächst die exklusiveren Handles jeder zu verändernen Datei holst, dann alle Dateien schreibst und anschließend (oder bei einem Fehler! Stichworte: MutualExclusion, HoldAndWait) die Handles wieder freigibst.

Löst das Dein Problem? Vielleicht kannst Du das Problem genauer beschreiben, das "raten" ist nämlich ziemlich ineffizient.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 Uhr.
Seite 1 von 2  1 2      

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