FSCTL_FILE_LEVEL_TRIM IOCTL (winioctl.h)
Gibt Bereiche innerhalb der angegebenen Datei an, die nicht vom Speichersystem gespeichert werden müssen.
Um diesen Vorgang auszuführen, rufen Sie die Funktion DeviceIoControl mit den folgenden Parametern auf.
BOOL DeviceIoControl(
(HANDLE) hDevice, // Handle to a file
FSCTL_FILE_LEVEL_TRIM, // dwIoControlCode
(LPVOID) lpInBuffer, // Input buffer
(DWORD) nInBufferSize, // Size of input buffer
(LPVOID) lpOutBuffer, // Output buffer
(DWORD) nOutBufferSize, // Size of output buffer
(LPDWORD) lpBytesReturned, // Number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Hinweise
Der FSCTL_FILE_LEVEL_TRIM-Steuerelementcode ist ein Hinweis auf das zugrunde liegende Speichersystem. Wenn ein Bytesbereich gekürzt wurde und dieser Bereich später erneut gelesen wird, sind die zurückgegebenen Daten möglicherweise die ursprünglichen Daten vor dem Trimmvorgang – alle Nullen (0x00 Bytes), alle (0xff Bytes) oder eine Kombination aus diesen. Bevor der Trimmvorgang an das zugrunde liegende Speichersystem übergeben wird, werden die Eingabebereiche so reduziert, dass sie an Seitengrenzen ausgerichtet sind (4.096 Bytes in 32-Bit- und x64-basierten Editionen von Windows, 8.192 Bytes unter Itanium-Based Editionen von Windows).
Wenn beim Verarbeiten der FILE_LEVEL_TRIM_RANGE Einträge, die der FILE_LEVEL_TRIM Struktur im Eingabepuffer folgen, auf die der lpInBuffer-Parameter verweist, ein Fehler auftritt, wird die Verarbeitung beendet, und das NumRangesProcessed-Element der FILE_LEVEL_TRIM_OUTPUT Struktur, auf die der lpOutBuffer-Parameter verweist, gibt die Bereiche an, die erfolgreich verarbeitet wurden. Alle Bereiche zwischen NumRangesProcessed und dem NumRanges-Member der FILE_LEVEL_TRIM-Struktur wurden nicht verarbeitet.
Der FSCTL_FILE_LEVEL_TRIM-Steuerelementcode ist nicht mit verschlüsselten oder komprimierten Dateien kompatibel (GetFileAttributes gibt FILE_ATTRIBUTE_ENCRYPTED oder FILE_ATTRIBUTE_COMPRESSED zurück) und schlägt mit ERROR_INVALID_PARAMETER fehl. Sparsedateien (die durch FILE_ATTRIBUTE_SPARSE_FILE angegeben werden) werden unterstützt, aber nur bereiche, die zugeordnet wurden, können gekürzt werden. Dateien auf Volumes, die mit der BitLocker-Technologie verschlüsselt wurden, werden unterstützt, während einzeln verschlüsselte Dateien nicht vorhanden sind.
Der FSCTL_FILE_LEVEL_TRIM-Steuerungscode ist nicht an Transaktionen beteiligt. Wenn ein FSCTL_FILE_LEVEL_TRIM-Steuerelementcode während einer Transaktion verarbeitet wird und die Transaktion abgebrochen wird, wird für die Kürzung kein Rollback für die Transaktion ausgeführt.
Bereiche, die erfolgreich gekürzt wurden, werden aus dem Dateisystemcache entfernt.
Bereiche, die gekürzt werden, können über die gültige Datenlänge (VDL) bis zum Dateiende (EOF) hinausgehen.
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) | Ja |
SMB 3.0 Transparent Failover (TFO) | Ja |
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) | Ja |
Dateisystem mit freigegebenen Clustervolumes (CsvFS) | Ja |
Robustes Dateisystem (Resilient File System, ReFS) | No |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2012 [nur Desktop-Apps] |
Kopfzeile | winioctl.h (einschließlich Windows.h) |