Funzione CcFastCopyRead (ntifs.h)
La routine CcFastCopyRead
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 devono essere letti 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. Differisce da CcCopyRead 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.
CcFastCopyRead non restituisce un valore BOOLEAN per indicare se l'operazione di lettura ha avuto esito positivo.
fileOffset più lunghezza 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 try-except o istruzione 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 |
IRQL | < DISPATCH_LEVEL |