Condividi tramite


Funzione CcZeroData (ntifs.h)

Il CcZeroData routine zero l'intervallo specificato di byte in un file memorizzato nella cache o non memorizzato nella cache.

Nota

Questa routine deve essere chiamata solo a zero parti di un file oltre la lunghezza dei dati valida del file. CcZeroData non modificherà i dati scritti in precedenza del file. Per zero dati scritti in precedenza che fanno parte del file fino alla lunghezza dei dati valida del file, chiamare CcCopyWriteo una delle altre interfacce di scrittura memorizzate nella cache.

Sintassi

BOOLEAN CcZeroData(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER StartOffset,
  [in] PLARGE_INTEGER EndOffset,
  [in] BOOLEAN        Wait
);

Parametri

[in] FileObject

Puntatore a un FILE_OBJECT per il file in cui deve essere zero un intervallo di byte.

[in] StartOffset

Puntatore a una variabile che specifica l'offset di byte all'interno del file al primo byte da zero.

[in] EndOffset

Puntatore a una variabile che specifica l'offset di byte all'interno del file all'ultimo byte da zero.

[in] Wait

Impostare su TRUE se il chiamante deve essere inserito in uno stato di attesa fino a quando l'intero intervallo di byte non è stato azzerato. In caso contrario, questo parametro è impostato su FALSE.

Valore restituito

CcZeroData restituisce TRUE se i dati vengono zero; in caso contrario, restituisce FALSE.

Osservazioni

Il file da zero può essere memorizzato nella cache o non memorizzato nella cache. Tuttavia, se il file non è memorizzato nella cache, i valori di StartOffset e EndOffset devono essere entrambi multipli delle dimensioni del settore del volume.

Se si verifica un errore di allocazione del pool e Wait è stato specificato come TRUE, CcZeroData genera un'eccezione STATUS_INSUFFICIENT_RESOURCES. Se si verifica un errore di allocazione del pool e Wait è stato specificato come FALSE, CcZeroData restituisce FALSE, ma non genera un'eccezione.

Se la FileObject fornita non ha la memorizzazione nella cache abilitata, ma la memorizzazione nella cache esiste nel flusso ( ovvero un altro oggetto file per lo stesso file ha la memorizzazione nella cache abilitata), l'azzeazione verrà considerata come se la memorizzazione nella cache write-through sia abilitata.

Se Wait è impostato su TRUE, CcZeroData è garantito di completare la richiesta di dati zero e restituire TRUE. Se le pagine richieste del file memorizzato nella cache sono già residenti in memoria, i dati verranno zero immediatamente e non si verificherà alcun blocco. Se le pagine necessarie non sono residenti, il chiamante verrà messo in uno stato di attesa fino a quando tutte le pagine richieste non sono state rese residenti e i dati possono essere zero.

Se Wait è FALSE e se le pagine richieste del file memorizzato nella cache non sono già residenti in memoria, CcZeroData rifiuterà di bloccare e restituirà FALSE.

Se si verifica un errore di allocazione del pool, CcZeroData genera un'eccezione STATUS_INSUFFICIENT_RESOURCES. Se CcZeroData rileva altri errori, inclusi gli errori di I/O, gli errori verranno generati al chiamante.

Per i sistemi operativi Windows Vista e versioni successive, il comportamento di CcZeroData è il seguente:

  • Se il flusso viene memorizzato nella cache e write_through, StartOffset non deve essere allineato al settore.
  • Se EndOffset non è allineato, verrà arrotondato alle dimensioni del settore successive.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000. Vedere La sezione Note per le modifiche apportate a Vista e ai sistemi operativi successivi.
piattaforma di destinazione Universale
intestazione ntifs.h (include Fltkernel.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL <=APC_LEVEL

Vedere anche

CcInitializeCacheMap

CcIsFileCached

FILE_OBJECT