ccCopyWriteEx 函数 (ntifs.h)

CcCopyWriteEx 例程将数据从用户缓冲区复制到缓存的文件。 操作的 I/O 字节计数将计入发出线程。

语法

BOOLEAN CcCopyWriteEx(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER FileOffset,
  [in] ULONG          Length,
  [in] BOOLEAN        Wait,
  [in] PVOID          Buffer,
  [in] PETHREAD       IoIssuerThread
);

参数

[in] FileObject

指向要向其写入数据的缓存文件的文件对象的指针。

[in] FileOffset

指向变量的指针,该变量指定缓存文件中的起始字节偏移量。

[in] Length

要写入的数据的长度(以字节为单位)。

[in] Wait

如果调用方可以置于等待状态,直到复制所有数据,则设置为 TRUE;否则设置为 FALSE。

[in] Buffer

指向要从中复制数据的缓冲区的指针。

[in] IoIssuerThread

发出写入请求的线程。 对于启用了磁盘 I/O 记帐的文件系统,这是向 I/O 收费的线程。 如果 IoIssuerThread 为 NULL,则 I/O 会向当前线程收费。

返回值

如果成功复制数据, CcCopyWriteEx 例程返回 TRUE,否则返回 FALSE。

注解

如果 Wait 为 TRUE,则保证 CcCopyWriteEx 完成复制请求并返回 TRUE。 如果缓存文件的所需页已驻留在内存中,则会立即复制数据,并且不会发生阻塞。 如果任何所需的页面不是驻留页,调用方将处于等待状态,直到所有必需的页面都已驻留,并且可以复制数据。

如果 Wait 为 FALSE,则 CcCopyWriteEx 将拒绝阻止,并且如果缓存文件的所需页尚未驻留在内存中,或者如果文件对象上设置了FO_WRITE_THROUGH标志,则 CcCopyWriteEx 将返回 FALSE。

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

若要缓存文件,请使用 CcInitializeCacheMap

要求

要求
最低受支持的客户端 Windows 8
目标平台 通用
标头 ntifs.h (包括 Ntifs.h、FltKernel.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

CcInitializeCacheMap