Funzione CcSetFileSizesEx (ntifs.h)
La routine 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 nuove informazioni sulle dimensioni del file.
Valore restituito
CcSetFileSizesEx restituisce STATUS_SUCCESS se la dimensione del file è stata modificata correttamente e, se è stata necessaria un'eliminazione che 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 l'eliminazione del file ccSetFileSizesEx , CcSetFileSizesEx non genererà errori; restituisce solo il codice NTSTATUS appropriato dell'operazione di scaricamento o eliminazione.
Se l'operazione causa l'estensione della sezione CcSetFileSizesEx, CcSetFileSizesEx genererà qualsiasi errore durante questa estensione.
Commenti
I file system devono chiamare CcSetFileSizesEx per aggiornare le strutture dei dati della gestione cache ogni volta che viene apportata una delle modifiche seguenti a un file memorizzato nella cache:
La dimensione dell'allocazione è aumentata.
La lunghezza dei dati valida è diminuita.
La lunghezza dei dati valida è aumentata da un'operazione di I/O non memorizzata nella cache.
Le dimensioni del file sono aumentate o ridotte.
Se l'operazione causa l'estensione della sezione CcSetFileSizesEx e si verifica un errore, CcSetFileSizesEx genera un'eccezione di stato per tale errore specifico. 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'istruzione try-except o try-finally.
Il file system deve assicurarsi che la mappa della cache sia valida e rimanga 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.
Requisiti
Requisito | Valore |
---|---|
Intestazione | ntifs.h |