FSCTL_MOVE_FILE IOCTL (winioctl.h)

Verschiebt mindestens einen virtuellen Cluster einer Datei innerhalb desselben Volumes von einem logischen Cluster in einen anderen. Dieser Vorgang wird während der Defragmentierung verwendet.

Um diesen Vorgang auszuführen, rufen Sie die Funktion DeviceIoControl mit den folgenden Parametern auf.

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to volume
  FSCTL_MOVE_FILE,              // dwIoControlCode
  (LPVOID) lpInBuffer,          // MOVE_FILE_DATA structure
  (DWORD) nInBufferSize,        // size of input buffer
  NULL,                         // lpOutBuffer
  0,                            // nOutBufferSize
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

Hinweise

Der FSCTL_MOVE_FILE Steuercode verschiebt einen oder mehrere virtuelle Cluster einer Datei von einem logischen Cluster in einen anderen innerhalb desselben Volumes. Wenn die zu verschiebende Datei eine sparse- oder komprimierte Datei ist, beträgt die Granularität der Verschiebung 16 Cluster. Andernfalls ist die Granularität ein Cluster.

Um eine geöffnete Datei so zu markieren, dass sie nicht defragmentiert wird, rufen Sie die DeviceIoControl-Funktion mit dem FSCTL_MARK_HANDLE-Steuerelementcode mit MARK_HANDLE_PROTECT_CLUSTERS im HandleInfo-Member der MARK_HANDLE_INFO-Struktur auf, die im lpInBuffer-Parameter übergeben wird.

Beachten Sie, dass die von der DeviceIoControl-Funktion mit dem FSCTL_GET_VOLUME_BITMAP Steuercode zurückgegebene Bitmap einen Zeitpunkt darstellt und falsch sein kann, sobald sie gelesen wurde, wenn das Volume schreibaktivität aufweist. Daher ist es möglich, einen Cluster in einen zugeordneten Cluster zu verschieben, obwohl eine aktuelle Bitmap darauf hinweist, dass der Cluster nicht zugeordnet ist. Programme, die FSCTL_MOVE_FILE verwenden, müssen auf diese Möglichkeit vorbereitet sein.

Die Auswirkungen von überlappenden E/A-Vorgängen auf diesen Vorgang finden Sie im Abschnitt Hinweise des Themas DeviceIoControl .

Eine Liste der Dateien, Streams und Streamtypen, die vom FSCTL_MOVE_FILE-Steuerelementcode unterstützt werden, finden Sie im Abschnitt Dateien, Streams und Streamtypen, die für die Defragmentierung unterstützt werden des Themas Defragmentierung von Dateien .

In Windows 8 und Windows Server 2012 wird dieser Code von den folgenden Technologien unterstützt.

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) No
SMB 3.0 Transparent Failover (TFO) No
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) No
Dateisystem mit freigegebenen Clustervolumes (CsvFS) Ja

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