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 包含复制的实际字节数。

返回值

没有

言论

CcFastCopyReadCcCopyRead的更快版本。 它不同于 CcCopyRead 在以下方面:

  • FileOffset 是 ULONG,而不是PLARGE_INTEGER。

  • 没有 Wait 参数。 调用方必须能够进入等待状态,直到复制所有数据。

  • CcFastCopyRead 不返回 BOOLEAN 以指示读取操作是否成功。

FileOffset 加上 长度 必须小于或等于缓存文件的大小,否则将发生断言失败。

如果发生任何故障,CcFastCopyRead 将引发该特定失败的状态异常。 例如,如果池分配失败,CcFastCopyRead 引发STATUS_INSUFFICIENT_RESOURCES异常;如果发生 I/O 错误,CcFastCopyRead 将引发 I/O 错误的状态异常。 因此,若要控制是否发生故障,驱动程序应在 try-finally 语句 中包装对 CcFastCopyRead 的调用,try-finally 语句。

若要缓存文件,请使用 CcInitializeCacheMap

要求

要求 价值
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

另请参阅

CcCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity