Condividi tramite


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

Vedere anche

CcInitializeCacheMap

CcSetCacheFileSizes