FsiLock
obj -> FsiLock(int1, int2, logic3) : int
Dateibereich sperren/entsperren
Details
- obj: Datei-Deskriptor
- int1: Sperrbereichsposition
- int2: Sperrbereichsgröße
- logic3: Sperren/Entsperren
- Resultat:
intSperr-/Entsperrresultat_ErrOkSperren/Entsperren erfolgreich_ErrFsiAccessDeniedBerechtigung nicht ausreichend_ErrFsiSharingViolationZugriffskonflikt aufgetreten_ErrFsiLockViolationSperrkonflikt aufgetreten - Siehe: Verwandte Befehle
Mit dieser Funktion kann ein Bereich der externen Datei (obj) gesperrt (logic3 = true) oder entsperrt werden (logic3 = false). Der Bereich wird durch seine Postion (int1) ab Dateianfang und seine Größe (int2) festgelegt. FsiLock() dient zur Synchronisation von Zugriffen auf gemeinsam benutzte externe Dateien. Lese- oder Schreibzugriffe auf gesperrte Bereiche sind dabei von anderen Benutzern nicht möglich.
Bei der Synchronisation von Zugriffen sollte vor einer Lese- bzw. Schreiboperation der entsprechende Bereich gesperrt werden.
Die Anweisung gibt einen Fehlerwert (_ErrFsi...) zurück. Der Fehlerwert des Betriebssystems kann über die Eigenschaft FsiError abgefragt werden.
Beispiel:
// Dateibereichssperrung erfolgreich
if (tHandle->FsiLock(tPos, 100, true) = _ErrOk)
{
// Dateizeiger setzen
tHandle->FsiSeek(tPos);
// 100 Byte lesen
tHandle->FsiRead(tBuffer, 100);
// Dateibereich entsperren
tHandle->FsiLock(tPos, 100, false);
}
Mögliche Laufzeitfehler:
_ErrHdlInvalid: Datei-Deskriptor (obj) ungültig