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

Vedi anche

CcInitializeCacheMap

CcSetCacheFileSizes