Funzione CcFastCopyRead (ntifs.h)

La routine CcFastCopyRead esegue una copia veloce letta da un file memorizzato nella cache in un buffer in memoria.

Sintassi

void CcFastCopyRead(
  [in]  PFILE_OBJECT     FileObject,
  [in]  ULONG            FileOffset,
  [in]  ULONG            Length,
  [in]  ULONG            PageCount,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus
);

Parametri

[in] FileObject

Puntatore a un oggetto file per il file memorizzato nella cache da cui leggere i dati.

[in] FileOffset

Offset di byte iniziale all'interno del file memorizzato nella cache.

[in] Length

Lunghezza in byte dei dati da leggere.

[in] PageCount

Numero di pagine estese dalla lettura.

[out] Buffer

Puntatore a un buffer in cui copiare i dati.

[out] IoStatus

Puntatore a una struttura che riceve lo stato di completamento finale e le informazioni sull'operazione. Se non tutti i dati vengono copiati correttamente, IoStatus.Information contiene il numero effettivo di byte copiati.

Valore restituito

nessuno

Osservazioni

CcFastCopyRead è una versione più veloce di CcCopyRead. È diverso da CcCopyRead nei seguenti aspetti:

  • FileOffset è un 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.

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

FileOffset più Length deve essere minore o uguale alla dimensione del file memorizzato nella cache oppure si verificherà un errore di asserzione.

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

Per memorizzare nella cache un file, usare CcInitializeCacheMap.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Vedi anche

CcCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity