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

0x0010 - File System Object 1:

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

0x0010 - File System Object 2:

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:
0x00000001 = Kopieren der Datei.
(Ist das Flag nicht gesetzt, wird die Datei bewegt.)0x00000002 = Bereits vorhandene Datei überschreiben

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