Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le code de contrôle FSCTL_OFFLOAD_WRITE initie une écriture de déchargement pour un bloc de données dans un système de stockage qui prend en charge les primitives d’écriture de déchargement.
Pour effectuer cette opération, les pilotes minifilter appellent FltFsControlFile avec les paramètres suivants, et les systèmes de fichiers, les redirecteurs et les pilotes de filtre de système de fichiers hérités appellent ZwFsControlFile avec les paramètres suivants.
Paramètres
Instance [in] : FltFsControlFile uniquement. Pointeur d’instance opaque pour l’appelant. Ce paramètre est obligatoire et ne peut pas être NULL.
FileObject [in] : FltFsControlFile uniquement. Objet pointeur de fichier spécifiant le fichier à écrire. Ce paramètre est obligatoire et ne peut pas être NULL.
FileHandle [in] : ZwFsControlFile uniquement. Handle de fichier du fichier dans lequel écrire. Ce paramètre est obligatoire et ne peut pas être NULL.
FsControlCode [in] : code de contrôle de l’opération. Utilisez FSCTL_OFFLOAD_WRITE pour cette opération.
InputBuffer [in] : pointeur vers une structure FSCTL_OFFLOAD_WRITE_INPUT , qui contient la taille et le décalage d’un bloc de données à lire.
InputBufferLength [in] : taille, en octets, de la mémoire tampon pointée par InputBuffer. Cette valeur est sizeof(FSCTL_OFFLOAD_WRITE_INPUT).
OutputBuffer [out] : pointeur vers une structure FSCTL_OFFLOAD_WRITE_INPUT , qui contient la taille et le décalage d’un bloc de données à lire.
OutputBufferLength [out] : taille, en octets, de la mémoire tampon pointée par le paramètre OutputBuffer . Cette valeur doit être au moins sizeof(FSCTL_OFFLOAD_READ_OUTPUT).
Bloc d’état
FltFsControlFile ou ZwFsControlFile retourne STATUS_SUCCESS si l’opération réussit. Sinon, la fonction appropriée peut retourner l’une des valeurs NTSTATUS suivantes.
| Code | Meaning |
|---|---|
| STATUS_INVALID_DEVICE_REQUEST | Le handle spécifié n’est pas un handle de fichier valide. |
| STATUS_INVALID_PARAMETER | Un paramètre n’est pas valide. Voir les remarques. |
| STATUS_NOT_SUPPORTED | Les opérations de lecture de déchargement ne sont pas prises en charge sur ce volume. |
| STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED | Le type de fichier demandé n’est pas pris en charge. Les opérations de déchargement ne sont pas prises en charge sur ces types de fichiers : un fichier transacted (TxF) ; Fichiers non-utilisateur ; Fichiers compressés ; Fichiers chiffrés ; Fichiers partiellement alloués ; Fichiers metatdata NTFS. |
| STATUS_TOO_LATE | Une opération d’écriture a été tentée sur un volume après sa suppression. |
| STATUS_FILE_DELETED | Le flux de données de ce fichier n’est pas valide. |
| STATUS_FILE_CLOSED | Le handle de fichier est fermé. |
| STATUS_INVALID_HANDLE | Le handle de fichier spécifié n’est pas valide. |
| STATUS_FILE_LOCK_CONFLICT | L’accès en lecture ou en écriture ne peut pas être accordé en raison de l’état de verrouillage de fichier actuel. |
| STATUS_END_OF_FILE | Le membre FileOffset deFSCTL_OFFLOAD_WRITE_INPUT commence après la fin du fichier (EOF). |
| STATUS_DISMOUNTED_VOLUME | Une écriture de déchargement ne peut pas se produire sur un volume démonté. |
| STATUS_MEDIA_WRITE_PROTECTED | Le volume est en lecture seule. |
| STATUS_INSUFFICIENT_RESOURCES | Les ressources insuffisantes sont disponibles pour terminer la demande. |
| STATUS_BUFFER_TOO_SMALL | InputBufferLength est trop petit pour que InputBuffer contienne une structureFSCTL_OFFLOAD_WRITE_INPUT , ou OutputBufferLength est trop petit pour que OutputBuffer reçoive une structure FSCTL_OFFLOAD_WRITE_OUTPUT . |
Remarques
La lecture du déchargement est disponible uniquement pour les fichiers normaux. Consultez la description de STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED pour obtenir la liste des types de fichiers non pris en charge.
Lorsque STATUS_INVALID_PARAMETER est retourné, l’erreur peut être l’un des paramètres non valides suivants :
- La taille du fichier est inférieure à PAGE_SIZE.
-
InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_OUTPUT). - Un ou plusieurs de ces membres deFSCTL_OFFLOAD_WRITE_INPUT sont incorrects : FileOffset n’est pas un multiple de la taille du secteur logique du volume. CopyLength n’est pas un multiple de la taille du secteur logique du volume. TransferOffset n’est pas un multiple de la taille du secteur logique du volume. La taille n’est pas la taille de la structureFSCTL_OFFLOAD_WRITE_INPUT . FileOffset> Longueur de données valide (VDL) du fichier. FileOffset + CopyLength>MAXULONGLONG.
Spécifications
| Type de condition requise | Requirement |
|---|---|
| Client minimum pris en charge | Windows 8 |
| Header | Ntifs.h (include Ntifs.h ou Fltkernel.h) |