Condividi tramite


Funzione CcFastCopyWrite (ntifs.h)

La routine CcFastCopyWrite esegue una scrittura di copia veloce da un buffer in memoria a un file memorizzato nella cache.

Sintassi

void CcFastCopyWrite(
  [in] PFILE_OBJECT FileObject,
  [in] ULONG        FileOffset,
  [in] ULONG        Length,
  [in] PVOID        Buffer
);

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 di byte iniziale all'interno del file memorizzato nella cache.

[in] Length

Lunghezza in byte dei dati da scrivere.

[in] Buffer

Puntatore al buffer da cui copiare i dati.

Valore restituito

Nessuno

Osservazioni

CcFastCopyWrite è una versione più veloce di CcCopyWrite. Differisce da CcCopyWrite nei seguenti aspetti:

  • FileOffset è una ULONG, non un PLARGE_INTEGER.

  • Non esiste alcun parametro Wait. Il chiamante deve essere in grado di immettere uno stato di attesa fino a quando non vengono copiati tutti i dati.

  • CcFastCopyWrite non restituisce un valore BOOLEAN per indicare se l'operazione di scrittura ha avuto esito positivo.

Se le pagine necessarie del file memorizzato nella cache sono già residenti in memoria, i dati vengono copiati immediatamente e non si verifica alcun blocco. Se le pagine necessarie non sono residenti, il chiamante viene inserito in uno stato di attesa fino a quando tutte le pagine richieste non sono state rese residenti e i dati possono essere copiati.

Se si verifica un errore, CcFastCopyWrite genera un'eccezione di stato per quel particolare errore. Ad esempio, se si verifica un errore di allocazione del pool, CcFastCopyWrite genera un'eccezione STATUS_INSUFFICIENT_RESOURCES; se si verifica un errore di I/O, CcFastCopyWrite 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 CcFastCopyWrite in un 'istruzione try-except o try-finally.

Per memorizzare nella cache un file, usare CcInitializeCacheMap.

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
intestazione ntifs.h (include Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe

Vedere anche

CcCopyWrite

CcInitializeCacheMap