Zum Inhalt springen

LockFile & CreateFile


Kitty82

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...