Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

LockFile & CreateFile

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

also ich bin hier schon richtig am Verzweifeln. Funktioniert das eine, finde ich irgendwo anders einen Fehler. :rolleyes:

Hoffe, ihr könnt mir hier wieder weiter helfen.

Und zwar ist es so, dass in meiner Anwendung der Benutzer ein Gerät auswählen kann. Daten von diesem Gerät sind in einer Datei gespeichert und diese wird geöffnet und eingelesen, sobald man dieses Gerät auswählt. Da es wichtig ist, dass niemand in dem Augenblick auf diese Datei zugreifen darf (ausser de Benutzer, der das Gerät ausgewählt hat), locke ich diese Datei.

Hier kurz der Code:



HANDLE hFile = CreateFile(pathForFile, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

if(!LockFile(lockFileHandle,0,0,1,0) )
{
AfxMessageBox("You can't select this scanner!\nSomeone else is using it! Try later again", MB_ICONINFORMATION | MB_OK);
//...
}[/PHP]

Ich habe das bis jetzt immer nur auf meinem Rechner getestet. Also war der PFad der Datei immer "C:\Ordner\..."

Da meine Andwendung später auf einem Server liegen wird und somit mehrere Leute darauf zugreifen werden, geht der Pfad so natürlich nicht, sondern:

"\\Computername\Ordner\..." - aber wenn ich so den Pfad angebe, meint er, die Datei ist schon gelockt. Obwohl momentan niemand darauf zugreift. Wenn ich es wieder in C:\Ordner... änder, funktioniert es.

Ich habe auch kein '\' vergessen und es ist mir bewusst, dass es im Code auch "\\\\Computername\\Ordner\\..." heissen muss. Das stimmt alles (zich mal geprüft).

funktioniert das LockFile dann allgemein nicht mit wenn es übers Netz geht?

Habe ich irgendwas nicht bedacht?

Bin widermal dankbar für JEDE hilfe!

Gruß Kitty

Hast du überhaupt mal getestet, ob CreateFile mit einem solchen Pfad klappt?

Warum benutzt du für LockFile nicht das Handle, dass du von CreateFile bekommst?

Warum lockst du nur das erste Byte der Datei?

Und die wichtigste Frage: Warm benutzt du überhaupt LockFile, anstatt einfach auf die Sharing-Flags bei CreateFile zu verzichten?

P.S.: Verschoben -> C++: Compiler, IDEs, APIs

Hallo klotzkopp,

also dann fang ich mal an dir zu antworten:

Hast du überhaupt mal getestet, ob CreateFile mit einem solchen Pfad klappt?

Um ehrlich zu sein nein. Da ich eigentlich dachte, dass C:\Ordner\.. und PCName\Ordner\... beides für mich gültige Pfade sind? Werde es aber testen.

Warum benutzt du für LockFile nicht das Handle, dass du von CreateFile bekommst?

Das war hier ein schreibfehler von mir. LockFile und CreateFile haben das gleiche Handle.

Warum lockst du nur das erste Byte der Datei?

das genügt doch um festzustellen, ob jemand sie benutzt. Wenn er prüft, dann fängt er ja beim ersten Byte an?

Und die wichtigste Frage: Warm benutzt du überhaupt LockFile, anstatt einfach auf die Sharing-Flags bei CreateFile zu verzichten?

Ein Kollege von mir hatte gemeint, dass Lockfile hier besser wäre. :confused:

P.S.: Verschoben -> C++: Compiler, IDEs, APIs

einmal sorry, dachte dass da das C/C++ gepasst hatte...

Also habe nun überprüft, ob CreateFile mit so einem Pfad klappt, es scheint nicht so zu sein. Bekomme den Fehler 5 (ERROR_ACCESS_DENIED).

Ich verstehe das dann so, dass ich nicht mit CreateFile auf so einen Pfad zugreifen kann. Was gibt es aber denn dann für Möglichkeiten, muss die Datei schreibgeschützt öffnen...

gruß kitty

habe auch in der Beschreibung von CreateFile gesehen, dass es funktionieren sollte.

Ja, öffne sie immernoch so. (gleiches handle bei lockfile und createFile).

ich habe auf dem kompletten ordner worin die datei lieg, vollzugriff.

danke, dass du mir hier hilfst!

es scheint ein problem bei uns hier in der firma zu sein. wir haben alle vollzugriff auf diese dateien, können aber nix ändern.

wenn das wieder klappt, schau ich nach.

trotzdem danke für deine bemühungen :byby:

gruß kitty

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.