DrvCreateFile
DrvCreateFile
Aufruf beim Erzeugen einer Datei
Details
- Request
MessageId:_DrvReqCreateFileId des EreignissesItemHeader:_DrvItemHeaderKopf des DatenpaketsProtocolId:0xF3A49E52Id des verwendeten ProtokollsProtocolVersion:0x00040000Version des verwendeten ProtokollsItemAuthUserDomain:_DrvItemAuthUserDomainInformationsbereich des am Betriebssystem angemeldeten BenutzersUserName:alphaName des angemeldeten BenutzersDomainName:alphaDomäne des angemeldeten BenutzersItemFilePath:_DrvItemFilePathInformationsbereich für die DateiFilePath:alphaPfad und Dateiname (ohne Laufwerksbuchstabe)ItemFileAccess:_DrvItemFileAccessInformationsbereich für die ZugriffsartFsiFlags:intZugriffsart (siehe Text)ItemFileAttributes:_DrvItemFileAttributesInformationsbereich für DateiattributeFileAttributes:intDateiattribute- Siehe: Verwandte Befehle
Dieses Ereignis wird aufgerufen, wenn eine Datei oder ein Verzeichnis auf dem Laufwerk erzeugt wird. In dem Request wird der am Betriebssystem angemeldete Benutzer übergeben. In FilePath befindet sich der Pfad (ohne Laufwerksbuchstaben) und der Dateiname der neu angelegten Datei. Der Inhalt von FsiFlags kann mit folgenden Konstanten, oder Kombinationen davon, verglichen werden:
_FsiAcsR: nur Lesezugriff_FsiAcsW: nur Schreibzugriff_FsiAcsRW: Lese- und Schreibzugriff_FsiDenyNone: kein exklusivier Zugriff_FsiStdRead: Standard-Lesemodus_FsiStdWrite: Standard-Schreibmodus
Die Dateiattribute stehen in FileAttributes und können mit folgenden Konstanten verglichen werden:
-
_FsiAttrHidden: Versteckte Datei -
_FsiAttrSystem: Systemdatei -
_FsiAttrDir: Verzeichnis -
_FsiAttrArchive: Archivdatei -
Response
-
MessageId_DrvResCreateFile- Id der Antwort
-
ItemHeader_DrvItemHeader- Kopf des Datenpakets
-
ProtocolId0xF3A49E52- Id des verwendeten Protokolls
-
ProtocolVersion0x00040000- Version des verwendeten Protokolls
-
ItemFileCustom_DrvItemFileCustom- Informationsbereich für benutzerdefinierte Daten
-
Custom01alpha- Benutzerdefinierte Informationen
-
ItemFileAuthorisation_DrvItemFileAuthorisation- Informationsbereich für Berechtigungen
-
UserIdint- Zugriffs-Id
-
Authorisationint- Berechtigungen
-
ItemResult_DrvItemResult- Ergebnis-Bereich
-
Resultint- Ergebniswert
Der Bereich ItemFileCustom ist optional. Die übergebenen Informationen in Custom01 werden bei jeder Dateioperation wieder übertragen. Hier können vom Programmierer Informationen zur späteren Verarbeitung angegeben werden.
Der Bereich ItemFileAuthorisation muss für jede Zugriffs-Id angegeben werden. Können sich Benutzer mit zwei unterschiedlichen Zugriffs-Ids anmelden (siehe DrvLoginDomainUser ), müssen hier zwei Bereiche mit den entsprechenden Berechtigungen angegeben werden. Die Berechtigungen werden als ODER-Kombination folgender Konstanten übergeben:
_DrvAuthAll: Alle Rechte vorhanden_DrvAuthNone: Keine Rechte vorhanden_DrvAuthList: Dateien und Verzeichnisse listen_DrvAuthDelete: Dateien und Verzeichnisse löschen_DrvAuthRename: Dateien und Verzeichnisse umbenennen_DrvAuthMove: Dateien und Verzeichnisse verschieben_DrvAuthSetAttributes: Attribute von Dateien und Verzeichnissen setzen_DrvAuthRead: Datei lesen_DrvAuthWrite: Datei schreiben_DrvAuthExecute: Datei ausführen_DrvAuthCreateDirectory: Verzeichnis erstellen_DrvAuthCreateFile: Datei erstellen
Die Datei wird nur dann erzeugt, wenn in Result _ErrOk (0) angegeben wird. Durch das Setzen eines _ErrFsi...-Wertes können andere Fehlerzustände übermittelt werden.
Beispiel:
if (tDrvRequestMessageId = _DrvReqCreateFile)
{
tDrvMsxWrite # MsxOpen(_MsxSocket | _MsxWrite, tSck);
tDrvMsxWrite->MsxWrite(_MsxMessage, _DrvResCreateFile);
tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemHeader); // ItemHeader
tDrvMsxWrite->MsxWrite(_MsxData, 0xF3A49E52); // ProtocolId
tDrvMsxWrite->MsxWrite(_MsxData, 0x00040000); // ProtocolVersion
tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemFileCustom);
tDrvMsxWrite->MsxWrite(_MsxData, ''); // no custom information
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(_MsxItem, _DrvItemResult); // write result
tDrvMsxWrite->MsxWrite(_MsxData, _ErrOk);
tDrvMsxWrite->MsxWrite(_MsxEnd, 0);
tDrvMsxWrite->MsxClose();
}