MOVE_FILE_DATA-Struktur (winioctl.h)

Enthält Eingabedaten für den Steuerungscode FSCTL_MOVE_FILE.

Syntax

typedef struct {
  HANDLE        FileHandle;
  LARGE_INTEGER StartingVcn;
  LARGE_INTEGER StartingLcn;
  DWORD         ClusterCount;
} MOVE_FILE_DATA, *PMOVE_FILE_DATA;

Member

FileHandle

Ein Handle für die zu verschiebende Datei.

Verwenden Sie CreateFile, um ein Handle für eine Datei abzurufen.

Wenn die Datei verschlüsselt ist, muss das Handle über das Zugriffsrecht FILE_READ_DATA, FILE_WRITE_DATA, FILE_APPEND_DATA oder FILE_EXECUTE verfügen. Weitere Informationen finden Sie unter Dateisicherheit und Zugriffsrechte.

StartingVcn

Ein VCN (Clusternummer relativ zum Anfang einer Datei) des ersten zu verschiebenden Clusters.

StartingLcn

Eine LCN (Clusternummer auf einem Volume), in die der VCN verschoben werden soll.

ClusterCount

Die Anzahl der zu verschiebenden Cluster.

Hinweise

Verwenden Sie zum Abrufen von Daten zum Ausfüllen dieser Struktur die DeviceIoControl-Funktion mit dem FSCTL_GET_RETRIEVAL_POINTERS Steuercode.

Der erste Cluster eines Verzeichnisses auf einem FAT-Dateisystemvolume kann nicht verschoben werden.

Verschieben Sie nach Möglichkeit Daten in relativ aufeinander ausgerichteten Blöcken in 16-KB-Schritten. Dadurch wird der Aufwand bei Vorgängen vom Typ „Kopie bei Schreibvorgängen“ reduziert, wenn Schattenkopien aktiviert sind, da sich der Speicherplatzbedarf für Schattenkopien erhöht und die Leistung gemindert wird, wenn die folgenden Bedingungen zutreffen:

  • Die Blockgröße der Verschiebungsanforderung ist kleiner als oder gleich 16 KB.
  • Das Verschiebungsdelta liegt nicht in Schritten von 16 KB vor.
Das Verschiebungsdelta entspricht der Anzahl von Bytes zwischen dem Anfang des Quellblocks und dem Anfang des Zielblocks. Anders ausgedrückt: Ein Block, der bei Offset X (auf dem Datenträger) beginnt, kann zu einem Startoffset Y verschoben werden, wenn der absolute Wert von X minus Y ein gerades Vielfaches von 16 KB ergibt. Wenn wir also von 4-KB-Clustern ausgehen, wird ein Verschiebungsvorgang von Cluster 3 zu Cluster 27 optimiert, ein Verschiebungsvorgang von Cluster 18 zu Cluster 24 jedoch nicht. Beachten Sie „mod(3,4) = 3 = mod(27,4)“. „Mod 4“ wird ausgewählt, da vier Cluster mit jeweils 4 KB 16 KB entsprechen. Daher führt ein mit einer Clustergröße von 16 KB formatiertes Volume dazu, dass alle Verschiebungsdateien optimiert werden.

Weitere Informationen zu Schattenkopien finden Sie unter Volumeschattenkopie-Dienst.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile winioctl.h (windows.h einschließen)

Weitere Informationen

Defragmentieren von Dateien

FSCTL_GET_RETRIEVAL_POINTERS

FSCTL_MOVE_FILE

GetFileAttributes

GetFileAttributesEx

GetFileInformationByHandle