Funzione CcCopyWriteEx (ntifs.h)

La routine CcCopyWriteEx copia i dati da un buffer utente a un file memorizzato nella cache. Il conteggio dei byte di I/O per l'operazione viene addebitato al thread emittente.

Sintassi

BOOLEAN CcCopyWriteEx(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER FileOffset,
  [in] ULONG          Length,
  [in] BOOLEAN        Wait,
  [in] PVOID          Buffer,
  [in] PETHREAD       IoIssuerThread
);

Parametri

[in] FileObject

Puntatore a un oggetto file per il file memorizzato nella cache in cui devono essere scritti i dati.

[in] FileOffset

Puntatore a una variabile che specifica l'offset dei byte iniziale all'interno del file memorizzato nella cache.

[in] Length

Lunghezza in byte dei dati da scrivere.

[in] Wait

Impostare su TRUE se il chiamante può essere inserito in uno stato di attesa fino a quando non vengono copiati tutti i dati, FALSE in caso contrario.

[in] Buffer

Puntatore al buffer da cui copiare i dati.

[in] IoIssuerThread

Thread che emette la richiesta di scrittura. Per un file system con contabilità di I/O su disco abilitata, questo è il thread a cui viene addebitato l'I/O. Se IoIssuerThread è NULL, l'I/O viene addebitato al thread corrente.

Valore restituito

La routine CcCopyWriteEx restituisce TRUE se i dati sono stati copiati correttamente, FALSE in caso contrario.

Commenti

Se Wait è TRUE, CcCopyWriteEx viene garantito di completare la richiesta di copia e restituire TRUE. Se le pagine richieste del file memorizzato nella cache sono già residenti in memoria, i dati verranno copiati 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 necessarie non sono state rese residenti e i dati possono essere copiati.

Se Wait è FALSE, CcCopyWriteEx rifiuterà di bloccare e restituirà FALSE, se le pagine richieste del file memorizzato nella cache non sono già residenti in memoria o se il flag FO_WRITE_THROUGH è impostato sull'oggetto file.

Se si verifica un errore, CcCopyWriteEx genera un'eccezione di stato per quel particolare errore. Ad esempio, se si verifica un errore di allocazione del pool, CcCopyWriteEx genera un'eccezione con lo stato STATUS_INSUFFICIENT_RESOURCES ; se si verifica un errore di I/O, CcCopyWriteEx genera l'eccezione di stato dell'errore di I/O. Pertanto, per ottenere il controllo se si verifica un errore, il driver deve eseguire il wrapping della chiamata a CcCopyWriteEx in un'istruzione try-except o try-finally .

Per memorizzare nella cache un file, usare CcInitializeCacheMap.

Requisiti

Requisito Valore
Client minimo supportato Windows 8
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h, FltKernel.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Vedi anche

CcInitializeCacheMap