Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Il codice di controllo FSCTL_OFFLOAD_WRITE avvia una scrittura offload per un blocco di dati in un sistema di archiviazione che supporta primitive di scrittura offload.
Per eseguire questa operazione, i driver minifilter chiamano FltFsControlFile con i parametri seguenti e i file system, i reindirizzamenti e i driver di filtro del file system legacy chiamano ZwFsControlFile con i parametri seguenti.
Parametri
Istanza [in]: solo FltFsControlFile . Puntatore a un'istanza opaca per il chiamante. Questo parametro è obbligatorio e non può essere NULL.
FileObject [in]: solo FltFsControlFile . Oggetto puntatore file che specifica il file in cui scrivere. Questo parametro è obbligatorio e non può essere NULL.
FileHandle [in]: Solo ZwFsControlFile . Handle di file del file in cui scrivere. Questo parametro è obbligatorio e non può essere NULL.
FsControlCode [in]: codice di controllo per l'operazione. Usare FSCTL_OFFLOAD_WRITE per questa operazione.
InputBuffer [in]: puntatore a una struttura FSCTL_OFFLOAD_WRITE_INPUT che contiene le dimensioni e l'offset di un blocco di dati da leggere.
InputBufferLength [in]: dimensioni, in byte, del buffer a cui punta InputBuffer. Questo valore è sizeof(FSCTL_OFFLOAD_WRITE_INPUT).
OutputBuffer [out]: puntatore a una struttura FSCTL_OFFLOAD_WRITE_INPUT che contiene le dimensioni e l'offset di un blocco di dati da leggere.
OutputBufferLength [out]: dimensioni, in byte, del buffer a cui punta il parametro OutputBuffer . Questo valore deve essere almeno sizeof(FSCTL_OFFLOAD_READ_OUTPUT).
Blocco di stato
FltFsControlFile o ZwFsControlFile restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, la funzione appropriata potrebbe restituire uno dei valori NTSTATUS seguenti.
| Codice | Meaning |
|---|---|
| STATUS_INVALID_DEVICE_REQUEST | L'handle specificato non è un handle di file valido. |
| STATUS_INVALID_PARAMETER | Un parametro non è valido. Vedere la sezione Osservazioni. |
| STATUS_NOT_SUPPORTED | Le operazioni di lettura di offload non sono supportate in questo volume. |
| STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED | Il tipo di file richiesto non è supportato. Le operazioni di offload non sono supportate in questi tipi di file: un file transazionato (TxF); File non utente; File compressi; File crittografati; File sparse; File Metatdata NTFS. |
| STATUS_TOO_LATE | È stata tentata un'operazione di scrittura su un volume dopo che è stata smontata. |
| STATUS_FILE_DELETED | Il flusso di dati per questo file non è valido. |
| STATUS_FILE_CLOSED | L'handle di file è chiuso. |
| STATUS_INVALID_HANDLE | L'handle di file specificato non è valido. |
| STATUS_FILE_LOCK_CONFLICT | Non è possibile concedere l'accesso in lettura o scrittura a causa dello stato di blocco del file corrente. |
| STATUS_END_OF_FILE | Il membro FileOffset diFSCTL_OFFLOAD_WRITE_INPUT inizia dopo la fine del file (EOF). |
| STATUS_DISMOUNTED_VOLUME | Un'offload write non può verificarsi in un volume smontato. |
| STATUS_MEDIA_WRITE_PROTECTED | Il volume è di sola lettura. |
| STATUS_INSUFFICIENT_RESOURCES | Sono disponibili risorse insufficienti per completare la richiesta. |
| STATUS_BUFFER_TOO_SMALL | InputBufferLength è troppo piccolo per InputBuffer per contenere una strutturaFSCTL_OFFLOAD_WRITE_INPUT o OutputBufferLength è troppo piccolo per OutputBuffer per ricevere una struttura FSCTL_OFFLOAD_WRITE_OUTPUT . |
Osservazioni:
La lettura offload è disponibile solo per i file normali. Vedere la descrizione per STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED per un elenco di tipi di file non supportati.
Quando viene restituito STATUS_INVALID_PARAMETER, l'errore potrebbe essere uno dei parametri non validi seguenti:
- Le dimensioni del file sono minori di PAGE_SIZE.
-
InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_OUTPUT). - Uno o più di questi membri diFSCTL_OFFLOAD_WRITE_INPUT non sono corretti: FileOffset non è un multiplo delle dimensioni del settore logico del volume. CopyLength non è un multiplo delle dimensioni del settore logico del volume. TransferOffset non è un multiplo delle dimensioni del settore logico del volume. Le dimensioni non sono le dimensioni della strutturaFSCTL_OFFLOAD_WRITE_INPUT . FileOffset> Lunghezza dati valida (VDL) per il file. FileOffset + CopyLength>MAXULONGLONG.
Requisiti
| Tipo di requisito | Requisito |
|---|---|
| Client minimo supportato | Windows 8 |
| Header | Ntifs.h (include Ntifs.h o Fltkernel.h) |