0x0010 - File System Object
Das Modul bietet einen Zugriff auf das lokale Dateisystem über Service-Transfer-Objekte, die das Durchsuchen von Verzeichnissen und den Zugriff auf Dateien ermöglichen.
0x8nn0 – Module Header
SubIndex | Type | Name | Value | Type | Access |
---|---|---|---|---|---|
00 | VAR | Len |
| UNSIGNED16 | read-only |
01 | VAR | Address | 0x0010 00nn | UNSIGNED32 | read-only |
02 | VAR | Type | FSO | VISIBLE STRING | read-only |
03 | VAR | Name | FSO | VISIBLE STRING | read-only |
04 | VAR | Dev Type | 0x0010 2710 | UNSIGNED32 | read-only |
0xBnn0 - Dir Service Transfer
Dieses Objekt gibt alle Dateien und Unterverzeichnisse eines gegeben Verzeichnispfades zurück (z. B. zum Durchsuchen von Verzeichnissen).
Die Pfadangabe kann Platzhalterzeichen beinhalten, z. B. '*' oder '?'. Endet der String mit einem Platzhalter, Punkt (.), oder Verzeichnisnamen, muss der Benutzer die Zugriffsrechte zum Hauptverzeichnis und allen Unterverzeichnissen des Pfades haben.
InputData | |
---|---|
Type | Name |
UNSIGNED32 | cbsRootDir |
VISIBLE STRING | sRootDir |
OutputData | |
---|---|
Type | Name |
UNSIGNED32 | Version = 0 |
UNSIGNED32 | cbData |
UNSIGNED32 | cDirs |
UNSIGNED32 | cFiles |
UNSIGNED32 | nOffsFirstDir //Offset der ersten DirectoryInfo Struktur |
UNSIGNED32 | nOffsFirstFile //Offset der ersten FileInfo Struktur |
DirectoryInfo | |
---|---|
Type | Name |
UNSIGNED32 | nOffsetNextDir |
UNSIGNED32 | cchName |
Char[cchName] | szName |
FileInfo | |
---|---|
Type | Name |
UNSIGNED32 | nOffsetNextFile |
SIGNED64 | Filesize |
UNSIGNED32 | FileAttributes |
UNSIGNED32 | cchFilename |
Char[cchFilename] | szName |
0xBnn1 – GetFile Service Transfer
Service Transfer Objekte zum Lesen und Schreiben einer Datei
Die Funktionen liefern Output-Daten. Bitte beachten Sie, dass es keine parallelen Zugriffe durch andere Clients gibt, da dies zum Überschreiben der Output-Daten führen kann. |
Das Lesen und Schreiben von großen Dateien kann über multiple Aufrufe erfolgen. Die Datei wird zunächst über die Angabe eine Dateinamens geöffnet, weiter geht es dann mit der Angabe des Continuation Handle, das bei tFileResponse zurückgegeben wird. Die maximale Größe eines Datensegmentes wird durch den Parameter cbMaxRead festgelegt.
Es muss immer entweder ein Dateiname oder ein Continuation Handle angegeben werden. Beide Angaben zugleich oder gar keine Angabe führen zum Rückgabewert E_INVALIDDATA.
InputData | ||
---|---|---|
Type | Name | Bedeutung |
UNSIGNED32 | cbFilename | Länge des Dateinamens in Zeichen |
UNSIGNED32 | Continuation handle | Für anschließende Lesezugriffe muss das Continuation Handle angegeben werden, das von GetFile OutputData zurückgegeben wurde. |
UNSIGNED32 | cbMaxRead | Maximale Größe für den Rückgabewert. Dieses ist die Anzahl an Bytes, die gelesen werden sollen, plus die Größe der OutputData-Struktur. Der Wert muss immer größer sein als die Größe der OutputData Struktur. |
Char[cbFilename] | Filename | Pfad und Dateiname, die für das Lesen geöffnet werden sollen |
OutputData | ||
---|---|---|
Type | Name | Bedeutung |
UNSIGNED32 | cbData | Anzahl der Bytes, die gelesen wurden |
UNSIGNED32 | Continuation handle | Falls noch Daten zum Lesen verbleiben, wird dieser Continuation Handle für nachfolgende Lesezugriffe verwendet. |
UNSIGNED32 | bFinished | Zeigt an, ob noch mehr Daten aus der Datei gelesen werden können. „True“ = das Lesen der Datei ist abgeschlossen und es sind keine weiteren Daten vorhanden. 0 = false; anything else = true |
BYTE[cbData] | data | Speicherbereich für die zu lesenden Daten |
0xBnn2 - WriteFile Service Transfer
Die Funktionen liefern Output-Daten. Bitte beachten Sie, dass es keine parallelen Zugriffe durch andere Clients gibt, da dies zum Überschreiben der Output-Daten führen kann. |
InputData | ||
---|---|---|
Type | Name | Bedeutung |
UNSIGNED32 | cbFilename | Länge des Dateinamens in Zeichen |
UNSIGNED32 | Continuation handle | Für anschließende Schreibzugriffe muss das Continuation Handle angegeben werden, das von WriteFile OutputData zurückgegeben wurde. |
UNSIGNED32 | cbData | Anzahl der Bytes, die geschrieben werden sollen |
UNSIGNED32 | bWriteCompleted | Zeigt den Abschluss des Dateizugriffs an. Wenn !=0, wird die Datei nach dem letzten Zugriff geschlossen. |
Char[cbFilename] | Filename | Dateiname |
BYTE[cbData] | data | Zu schreibende Daten |
OutputData | ||
---|---|---|
Type | Name | Bedeutung |
UNSIGNED32 | Continuation handle | Continuation Handle zum Schreiben weiterer Daten in die Datei |
0xBnn3 - CopyFile Service Transfer
Kopiere oder bewege die Quelldatei zum Ziel
InputData | ||
---|---|---|
Type | Name | Bedeutung |
UNSIGNED32 | cbSrc | Länge des Quelldateinamens |
UNSIGNED32 | cbDst | Länge des Zieldateinamens |
UNSIGNED32 | Flags | Eines oder mehrere der folgenden Flags: |
Char[cbSource] | Source Filename | Kompletter Pfad zur Quelldatei |
Char[cbDst] | Destination Filename | Kompletter Pfad zur Zieldatei |
0xBnn4 - DeleteFile Service Transfer
Datei oder Verzeichnis löschen.
InputData | ||
---|---|---|
Type | Name | Bedeutung |
UNSIGNED32 | cbFilename | Länge des Dateinamens |
UNSIGNED32 | bRecurse | Ein gesamtes Verzeichnis inkl. Unterverzeichnissen löschen (= rekursiv) 0 = false; anything else = true |
Char[cbFilename] | Filename | Pfad zur Datei oder dem Verzeichnis |
0xBnn5 - mkdir Service Transfer
Neues Directory anlegen
InputData | ||
---|---|---|
Type | Name | Bedeutung |
UNSIGNED32 | cbFilename | Länge des Verzeichnisnamens |
UNSIGNED32 | bRecurse | Verzeichnisse rekursiv erzeugen 0 = false; anything else = true |
char[cbFilename] | Filename | Name des neuen Verzeichnisses |