KsWriteFile 函数 (ks.h)

KsWriteFile 函数对指定的文件对象执行写入操作。 假定调用方正在序列化对文件的访问权限,以便针对FO_SYNCHRONOUS_IO文件对象执行操作。 如果可能,函数会尝试使用 FastIoDispatch ,或者针对设备对象生成写入请求。 所有相关统计信息都会更新。

语法

KSDDKAPI NTSTATUS KsWriteFile(
  [in]           PFILE_OBJECT     FileObject,
  [in, optional] PKEVENT          Event,
  [in, optional] PVOID            PortContext,
  [out]          PIO_STATUS_BLOCK IoStatusBlock,
  [in]           PVOID            Buffer,
  [in]           ULONG            Length,
  [in, optional] ULONG            Key,
  [in]           KPROCESSOR_MODE  RequestorMode
);

参数

[in] FileObject

指定要对其执行读取的文件对象。

[in, optional] Event

(可选)包含要用于写入的事件。 如果未传递任何事件,则假定调用位于同步文件对象上,或者调用方正在等待文件对象的事件。 如果调用不在同步文件对象上,则可以异步完成。 如果已为同步 I/O 打开文件,则此变量必须为 NULL。 如果使用此变量,则它必须是对象管理器分配的事件。

[in, optional] PortContext

(可选)包含完成端口的上下文信息。

[out] IoStatusBlock

指示返回状态信息的位置。 无论请求者模式如何,始终假定这是有效的地址。

[in] Buffer

指定要从中写入数据的缓冲区。 如果需要探测和锁定缓冲区,则将使用异常处理程序和 RequesterMode

[in] Length

指定传递的缓冲区的大小。

[in, optional] Key

(可选)包含一个密钥,如果没有,则为零。

[in] RequestorMode

指示在需要生成 IRP 时要置于读取 IRP 中的处理器模式。 此外,如果需要探测和锁定缓冲区,则使用它。 此变量还确定是否可以执行快速 I/O 调用。 如果请求者模式不是 KernelMode,但以前的模式为 ,则无法使用快速 I/O。

返回值

如果成功, KsWriteFile 函数将返回STATUS_SUCCESS;如果操作挂起,则返回STATUS_PENDING;如果操作不成功,则返回读取错误。

要求

要求
目标平台 通用
标头 ks.h (包括 Ks.h)
Library Ks.lib