Funzione CcSetFileSizesEx (ntifs.h)
Il CcSetFileSizesEx aggiorna le mappe della cache e l'oggetto sezione per un file memorizzato nella cache le cui dimensioni sono state modificate.
Sintassi
NTSTATUS CcSetFileSizesEx(
PFILE_OBJECT FileObject,
PCC_FILE_SIZES FileSizes
);
Parametri
FileObject
[in] Puntatore a un oggetto file per il file memorizzato nella cache.
FileSizes
[in] Puntatore a una struttura CC_FILE_SIZES contenente le informazioni sulle nuove dimensioni del file.
Valore restituito
CcSetFileSizesEx restituisce STATUS_SUCCESS se le dimensioni del file sono state modificate correttamente e, se è stata necessaria una ripulitura, l'eliminazione ha avuto esito positivo. In caso contrario, restituisce un codice NSTATUS non riuscito, ad esempio STATUS_INSUFFICIENT_RESOURCES, e potrebbe generare un'eccezione di stato.
Per quanto riguarda la generazione di un'eccezione di stato in caso di errore:
Se l'operazione causa CcSetFileSizesEx per scaricare e/o eliminare il file, CcSetFileSizesEx non genererà errori; restituisce semplicemente il codice NTSTATUS appropriato dell'operazione di scaricamento o eliminazione.
Se l'operazione causa l'estensione della sezione CcSetFileSizesEx, CcSetFileSizesEx genererà un errore durante l'estensione.
Osservazioni
I file system devono chiamare CcSetFileSizesEx per aggiornare le strutture dei dati di Gestione cache ogni volta che viene apportata una delle modifiche seguenti a un file memorizzato nella cache:
Le dimensioni di allocazione aumentano.
La lunghezza dei dati valida viene ridotta.
La lunghezza dei dati valida viene aumentata da un'operazione di I/O non memorizzata nella cache.
Le dimensioni del file aumentano o diminuiscono.
Se l'operazione causa CcSetFileSizesEx per estendere la sezione e si verifica un errore, CcSetFileSizesEx genera un'eccezione di stato per quel particolare errore. Ad esempio, se si verifica un errore di allocazione del pool, CcSetFileSizesEx genera un'eccezione STATUS_INSUFFICIENT_RESOURCES. Pertanto, per ottenere il controllo se si verifica un errore, il driver deve eseguire il wrapping della chiamata a CcSetFileSizesEx in un try-except o istruzione try-finally.
Il file system deve assicurarsi che la mappa della cache sia valida e rimanga così per la durata di questa chiamata.
Per memorizzare nella cache un file, usare CcInitializeCacheMap.
Per ottenere le dimensioni del file memorizzato nella cache, passare FileObject a CcGetFileSizePointer.
Fabbisogno
Requisito | Valore |
---|---|
intestazione |
ntifs.h |