Zum Hauptinhalt springen

DrvCloseFile

DrvCloseFile

Aufruf beim Schließen einer Datei

Details

  • Request
  • MessageId: _DrvReqCloseFile Id des Ereignisses
  • ItemHeader: _DrvItemHeader Kopf des Datenpakets
  • ProtocolId: 0xF3A49E52 Id des verwendeten Protokolls
  • ProtocolVersion: 0x00040000 Version des verwendeten Protokolls
  • ItemAuthUserDomain: _DrvItemAuthUserDomain Informationsbereich des am Betriebssystem angemeldeten Benutzers
  • UserName: alpha Name des angemeldeten Benutzers
  • DomainName: alpha Domäne des angemeldeten Benutzers
  • ItemFilePath: _DrvItemFilePath Informationsbereich für die Datei
  • FilePath: alpha Pfad und Dateiname (ohne Laufwerksbuchstabe)
  • ItemFileCustom: _DrvItemFileCustom Informationsbereich für benutzerdefinierte Daten
  • Custom01: alpha Benutzerdefinierte Informationen
  • ItemFileAttributes: _DrvItemFileAttributes Informationsbereich für Dateiattribute
  • FileAttributes: int Dateiattribute
  • ItemFileTime: _DrvItemFileTime Informationsbereich für Dateidatum und -uhrzeit
  • CreationTime: bigint Datum und Uhrzeit der Dateierzeugung
  • LastAccessTime: bigint Datum und Uhrzeit des letzten Zugriffs
  • LastWriteTime: bigint Datum und Uhrzeit der letzten Änderung
  • ItemContentChanged: _DrvItemContentChanged Informationsbereich für geänderte Inhalte
  • ContentChanged: logic Datei wurde geändert ( true )
  • ItemFileContentDisk: _DrvItemFileContentDisk Informationsbereich für den Inhalt der Datei
  • FilePath: alpha Pfad und Dateiname der Datei im temporären Pfad
  • Siehe: Verwandte Befehle

Das Ereignis wird ausgelöst, wenn die zuvor geöffnete Datei wieder geschlossen wird. Im Datenpaket befinden sich folgende Informationen:

  • ItemAuthUserDomain Hier wird der beim Betriebssystem angemeldete Benutzer und die Domäne, in der er angemeldet ist, übergeben.

  • ItemFilePath Der Pfad und Dateiname der geschlossenen Datei. Der Pfad wird ohne den Laufwerksbuchstaben angegeben.

  • ItemFileCustom Wurden für die Datei benutzerdefinierte Daten angegeben, befinden sich diese in diesem Bereich.

  • ItemFileAttributes Der Wert in dem Bereich FileAttributes kann mit folgenden Konstanten verglichen werden:

  • _FsiAttrHidden: Versteckte Datei

  • _FsiAttrSystem: Systemdatei

  • _FsiAttrDir: Verzeichnis

  • _FsiAttrArchive: Archivdatei

  • ItemFileTime In diesem Bereich befinden sich das Datum und die Uhrzeit für die Erstellung (CreationTime), den letzten Zugriff (LastAccessTime) und die letzte Änderung (LastWriteTime) der Datei. Der Wert wird als Zeitstempel angegeben, dieser kann mit folgender Anweisung abgefragt werden:

tDrvMsxRead->MsxRead(_MsxData, tTimeStamp);
tCalTime # CnvCB(tTimeStamp);
  • ItemContentChanged Wurde der Inhalt der Datei geändert, wird in ContentChanged true übergeben. Hat keine Veränderung statt gefunden, ist der Wert false.

  • ItemFileContentDisk Der Inhalt der Datei wird in einem temporären Verzeichnis gespeichert. Das Verzeichnis und der Dateiname dieser Datei befinden sich in FilePath. Die Datei darf in dem Pfad nicht gelöscht oder geändert werden. Die Werte der Datei (Hash, Dateigröße, ...) müssen in dem Antwortpaket übertragen werden.

  • Response

  • MessageId

    • _DrvResCloseFile
    • Id der Antwort
  • ItemHeader

    • _DrvItemHeader
    • Kopf des Datenpakets
  • ProtocolId

    • 0xF3A49E52
    • Id des verwendeten Protokolls
  • ProtocolVersion

    • 0x00040000
    • Version des verwendeten Protokolls
  • ItemFileCustom

  • Custom01

    • alpha
    • Benutzerdefinierte Informationen
  • ItemFileHash

  • FileHash

    • alpha
    • Hash der gespeicherten Datei
  • ItemFileSize

  • FileSize

    • bigint
    • Größe der Datei (in Bytes)
  • ItemFileAttributes

  • FileAttributes

    • int
    • Dateiattribute
  • ItemFileTime

  • CreationTime

    • bigint
    • Zeitstempel der Erzeugung der Datei
  • LastAccessTime

    • bigint
    • Zeitstempel des letzten Zugriffs
  • LastWriteTime

    • bigint
    • Zeitstempel der letzten Änderung
  • ItemFileAuthorisation

  • UserId

    • int
    • Zugriffs-Id
  • Authorisation

    • int
    • Berechtigungen

Der Bereich ItemFileCustom ist optional. Die benutzerdefinierten Informationen werden nur dann geändert, wenn dieser Bereich im Antwortdatenpaket enthalten ist. Zum Löschen der benutzerdefinierten Daten muss ein Leerstring angegeben werden.

Beispiel:

if (tDrvRequestMessageId = _DrvReqCloseFile)
{
tDrvMsxWrite # MsxOpen(_MsxSocket | _MsxWrite, tSck);

tDrvMsxWrite->MsxWrite(_MsxMessage, _DrvResCloseFile);
tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemHeader); // ItemHeader
tDrvMsxWrite->MsxWrite(_MsxData, 0xF3A49E52); // ProtocolId
tDrvMsxWrite->MsxWrite(_MsxData, 0x00040000); // ProtocolVersion

tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemFileCustom);
tDrvMsxWrite->MsxWrite(_MsxData, ''); // no custom data

tHash # StrCnv(StrCnv(FsiFileInfo(tRequestContentDiskFilePath, _FsiFileRMD160), _StrToUTF8), _StrFromANSI);
tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemFileHash); // set hash
tDrvMsxWrite->MsxWrite(_MsxData, tHash);
// File size
tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemFileSize); // set file size
tDrvMsxWrite->MsxWrite(_MsxData, tImportedFile->FsiSize64());

tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemFileAttributes); // set same attributes
tDrvMsxWrite->MsxWrite(_MsxData, tRequestFileAttributes);

tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemFileTime); // set file time
tDrvMsxWrite->MsxWrite(_MsxData, tRequestFileCreationTime);
tCalSystemTime->vmSystemTime();
tDrvMsxWrite->MsxWrite(_MsxData, CnvBC(tCalSystemTime));
tDrvMsxWrite->MsxWrite(_MsxData, CnvBC(tCalSystemTime));

tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemFileAuthorisation); // user authorisation for admins
tDrvMsxWrite->MsxWrite(_MsxData, 10);
tDrvMsxWrite->MsxWrite(_MsxData, _DrvAuthAll); // all rights

tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemFileAuthorisation); // user authorisation for everybody else
tDrvMsxWrite->MsxWrite(_MsxData, 12);
tDrvMsxWrite->MsxWrite(_MsxData, _DrvAuthList | _DrvAuthRead); // read only

tDrvMsxWrite->MsxWrite(_MsxEnd, 0);

tDrvMsxWrite->MsxClose();
}