FSCTL_OFFLOAD_WRITE-Steuerelementcode
Der FSCTL_OFFLOAD_WRITE Steuercode initiiert einen Auslagerungsschreibvorgang für einen Datenblock in einem Speichersystem, das Auslagerungsschreibtypen unterstützt.
Um diesen Vorgang auszuführen, rufen Minifiltertreiber FltFsControlFile mit den folgenden Parametern auf, und Dateisysteme, Umleitungen und Legacy-Dateisystemfiltertreiber rufen ZwFsControlFile mit den folgenden Parametern auf.
Parameter
Instanz [in]: Nur FltFsControlFile . Ein undurchsichtiger instance Zeiger für den Aufrufer. Dieser Parameter ist erforderlich und darf nicht NULL sein.
FileObject [in]: Nur FltFsControlFile . Das Dateizeigerobjekt, das die Datei angibt, in die geschrieben werden soll. Dieser Parameter ist erforderlich und darf nicht NULL sein.
FileHandle [in]: Nur ZwFsControlFile . Das Dateihandle der Datei, in die geschrieben werden soll. Dieser Parameter ist erforderlich und darf nicht NULL sein.
FsControlCode [in]: Der Steuerelementcode für den Vorgang. Verwenden Sie für diesen Vorgang FSCTL_OFFLOAD_WRITE .
InputBuffer [in]: Ein Zeiger auf eine FSCTL_OFFLOAD_WRITE_INPUT-Struktur , die die Größe und den Offset eines zu lesenden Datenblocks enthält.
InputBufferLength [in]: Die Größe des Puffers, auf den InputBuffer verweist, in Bytes. Dieser Wert ist sizeof(FSCTL_OFFLOAD_WRITE_INPUT).
OutputBuffer [out]: Ein Zeiger auf eine FSCTL_OFFLOAD_WRITE_INPUT-Struktur , die die Größe und den Offset eines zu lesenden Datenblocks enthält.
OutputBufferLength [out]: Die Größe des Puffers in Bytes, auf den der OutputBuffer-Parameter verweist. Dieser Wert muss mindestens sizeof(FSCTL_OFFLOAD_READ_OUTPUT) sein.
Statusblock
FltFsControlFile oder ZwFsControlFile gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt die entsprechende Funktion möglicherweise einen der folgenden NTSTATUS-Werte zurück.
Code | Bedeutung |
---|---|
STATUS_INVALID_DEVICE_REQUEST | Das angegebene Handle ist kein gültiges Dateihandle. |
STATUS_INVALID_PARAMETER | Ein Parameter ist ungültig. Siehe Hinweise. |
STATUS_NOT_SUPPORTED | Offload-Lesevorgänge werden auf diesem Volume nicht unterstützt. |
STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED | Der angeforderte Dateityp wird nicht unterstützt. Auslagerungsvorgänge werden für diese Dateitypen nicht unterstützt: Eine transaktionierte Datei (TxF); Nicht-Benutzer-Dateien; Komprimierte Dateien; Verschlüsselte Dateien; Sparsedateien; NTFS-Metadatendateien. |
STATUS_TOO_LATE | Nachdem die Bereitstellung aufgehoben wurde, wurde ein Schreibvorgang auf ein Volume versucht. |
STATUS_FILE_DELETED | Der Datenstrom für diese Datei ist ungültig. |
STATUS_FILE_CLOSED | Das Dateihandle ist geschlossen. |
STATUS_INVALID_HANDLE | Das angegebene Dateihandle ist ungültig. |
STATUS_FILE_LOCK_CONFLICT | Lese- oder Schreibzugriff kann aufgrund des aktuellen Dateisperrungszustands nicht gewährt werden. |
STATUS_END_OF_FILE | Das FileOffset-Element vonFSCTL_OFFLOAD_WRITE_INPUT beginnt nach dem Dateiende (EOF). |
STATUS_DISMOUNTED_VOLUME | Ein Auslagerungsschreibvorgang kann auf einem nicht eingebundenen Volume nicht erfolgen. |
STATUS_MEDIA_WRITE_PROTECTED | Das Volume ist schreibgeschützter Datenträger. |
STATUS_INSUFFICIENT_RESOUCES | Es stehen nicht genügend Ressourcen zum Abschließen der Anforderung zur Verfügung. |
STATUS_BUFFER_TOO_SMALL | InputBufferLength ist zu klein für InputBuffer , um eineFSCTL_OFFLOAD_WRITE_INPUT-Struktur zu enthalten, oder OutputBufferLength ist zu klein für OutputBuffer , um eine FSCTL_OFFLOAD_WRITE_OUTPUT-Struktur zu erhalten. |
Hinweise
Offloadlesevorgänge sind nur für normale Dateien verfügbar. Eine Liste der nicht unterstützten Dateitypen finden Sie in der Beschreibung für STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED .
Wenn STATUS_INVALID_PARAMETER zurückgegeben wird, kann der Fehler einer der folgenden ungültigen Parameter sein:
- Die Dateigröße ist kleiner als PAGE_SIZE.
- InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_OUTPUT)
. - Eines oder mehrere dieser Member vonFSCTL_OFFLOAD_WRITE_INPUT sind falsch: FileOffset ist kein Vielfaches der logischen Sektorgröße des Volumes. CopyLength ist kein Vielfaches der logischen Sektorgröße des Volumes. TransferOffset ist kein Vielfaches der logischen Sektorgröße des Volumes. Größe ist nicht die Größe derFSCTL_OFFLOAD_WRITE_INPUT-Struktur . FileOffset> Gültige Datenlänge (VDL) für die Datei. FileOffset + CopyLength>MAXULONGLONG.
Anforderungen
Anforderungstyp | Anforderung |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 |
Header | Ntifs.h (schließen Sie Ntifs.h oder Fltkernel.h ein) |