Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der FSCTL_OFFLOAD_WRITE-Steuerelementcode initiiert einen Offload-Schreibvorgang für einen Datenblock in einem Speichersystem, das Offload-Schreibtypen unterstützt.
Um diesen Vorgang auszuführen, rufen Minifiltertreiber FltFsControlFile mit den folgenden Parametern auf, und Dateisystem-, Umleitungs- und Legacy-Dateisystemfiltertreiber rufen ZwFsControlFile mit den folgenden Parametern auf.
Die Parameter
Instanz [in]: Nur FltFsControlFile . Ein undurchsichtiger Instanzzeiger für den Aufrufer. Dieser Parameter ist erforderlich und darf nicht NULL sein.
FileObject [in]: Nur FltFsControlFile . Das Dateizeigerobjekt, das die zu schreibende Datei angibt. Dieser Parameter ist erforderlich und darf nicht NULL sein.
FileHandle [in]: Nur ZwFsControlFile . Das Dateihandle der zu schreibenden Datei. Dieser Parameter ist erforderlich und darf nicht NULL sein.
FsControlCode [in]: Der Steuerelementcode für den Vorgang. Verwenden Sie FSCTL_OFFLOAD_WRITE für diesen Vorgang.
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 in Bytes, auf den InputBuffer verweist. 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 Anmerkungen. |
| 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. Offload-Vorgänge werden für diese Dateitypen nicht unterstützt: Eine Transacted-Datei (TxF); Nicht-Benutzer-Dateien; Komprimierte Dateien; Verschlüsselte Dateien; Sparsame Dateien; NTFS-Metadatendateien. |
| STATUS_TOO_LATE | Es wurde versucht, einen Schreibvorgang auf ein Volume zu erstellen, nachdem die Bereitstellung aufgehoben wurde. |
| 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 Dateisperrstatus nicht gewährt werden. |
| STATUS_END_OF_FILE | Das FileOffset-Element vonFSCTL_OFFLOAD_WRITE_INPUT beginnt nach dem Ende der Datei (EOF). |
| STATUS_DISMOUNTED_VOLUME | Bei einem nicht gemounteten Volume kann kein Offload-Schreibvorgang ausgeführt werden. |
| STATUS_MEDIA_WRITE_PROTECTED | Die Lautstärke ist schreibgeschützt. |
| STATUS_INSUFFICIENT_RESOURCES | Unzureichende Ressourcen stehen zur Verfügung, um die Anforderung abzuschließen. |
| STATUS_BUFFER_TOO_SMALL | InputBufferLength ist für InputBuffer zu klein, um eineFSCTL_OFFLOAD_WRITE_INPUT Struktur zu enthalten, oder OutputBufferLength ist zu klein, um eine FSCTL_OFFLOAD_WRITE_OUTPUT Struktur zu empfangen. |
Bemerkungen
Offload-Lesezugriff ist 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). - Mindestens eins dieser Mitglieder vonFSCTL_OFFLOAD_WRITE_INPUT ist 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 Volumens. Die 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 |
|---|---|
| Minimal unterstützter Client | Windows 8 |
| Header | Ntifs.h (enthalten Ntifs.h oder Fltkernel.h) |