ccFastCopyRead 函数 (ntifs.h)
CcFastCopyRead 例程执行从缓存文件到内存中缓冲区的快速复制读取。
语法
void CcFastCopyRead(
[in] PFILE_OBJECT FileObject,
[in] ULONG FileOffset,
[in] ULONG Length,
[in] ULONG PageCount,
[out] PVOID Buffer,
[out] PIO_STATUS_BLOCK IoStatus
);
参数
[in] FileObject
指向要从中读取数据的缓存文件的文件对象的指针。
[in] FileOffset
缓存文件中的起始字节偏移量。
[in] Length
要读取的数据的长度(以字节为单位)。
[in] PageCount
读取跨越的页数。
[out] Buffer
指向要将数据复制到其中的缓冲区的指针。
[out] IoStatus
指向 结构的指针,该结构接收最终完成状态和有关操作的信息。 如果未成功复制所有数据, IoStatus.Information 将包含已复制的实际字节数。
返回值
无
备注
CcFastCopyRead 是 CcCopyRead 的更快版本。 它与 CcCopyRead 在以下方面不同:
FileOffset 是 ULONG,而不是PLARGE_INTEGER。
没有 Wait 参数。 调用方必须能够进入等待状态,直到复制所有数据。
CcFastCopyRead 不返回 BOOLEAN 来指示读取操作是否成功。
FileOffset 加 Length 必须小于或等于缓存文件的大小,否则将发生断言失败。
如果发生任何故障, CcFastCopyRead 将针对该特定失败引发状态异常。 例如,如果池分配失败, CcFastCopyRead 将引发STATUS_INSUFFICIENT_RESOURCES异常;如果发生 I/O 错误, CcFastCopyRead 将引发 I/O 错误的状态异常。 因此,若要在发生故障时获得控制,驱动程序应在 try-except 或 try-finally 语句中包装对 CcFastCopyRead 的调用。
若要缓存文件,请使用 CcInitializeCacheMap。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |