ISequentialStream::Write 方法 (objidl.h)

Write 方法从当前搜寻指针处开始,将指定数量的字节写入流对象。

语法

HRESULT Write(
  [in]  const void *pv,
  [in]  ULONG      cb,
  [out] ULONG      *pcbWritten
);

参数

[in] pv

指向缓冲区的指针,该缓冲区包含要写入流的数据。 即使 cb 为零,也必须为此参数提供有效的指针。

[in] cb

要尝试写入流的数据字节数。 此值可以为零。

[out] pcbWritten

指向 ULONG 变量的指针,此方法在其中写入流对象的实际字节数。 调用方可以将此指针设置为 NULL,在这种情况下,此方法不提供实际写入的字节数。

返回值

此方法可以返回其中一个值。

返回代码 说明
S_OK 数据已成功写入流对象。
E_PENDING 仅异步存储:部分或全部要写入的数据当前不可用。
STG_E_MEDIUMFULL 写入操作失败,因为存储设备上没有剩余空间。
STG_E_ACCESSDENIED 调用方没有写入此流对象所需的权限。
STG_E_CANTSAVE 由于访问不当或空间不足以外的原因,无法写入数据。
STG_E_INVALIDPOINTER 其中一个指针值无效。 pv 参数必须 包含有效的指针,即使 cb 为零。
STG_E_REVERTED 对象在事务树中的上方还原操作已失效。
STG_E_WRITEFAULT 由于磁盘错误,写入操作失败。 当此方法尝试写入以简单模式 (使用 STGM_SIMPLE 标志) 打开的流时,也会返回此值。

注解

ISequentialStream::Write 将指定的数据写入流对象。 查找指针根据实际写入的字节数进行调整。 实际写入的字节数在 参数中返回。 如果字节计数为零字节,则写入操作不起作用。

如果搜寻指针当前超过流的末尾,并且字节计数为非零,则此方法将流的大小增加到搜寻指针,并写入从搜寻指针开始的指定字节。 写入流的填充字节不会初始化为任何特定值。 这与 MS-DOS FAT 文件系统中的文件结尾行为相同。

如果流末尾有零字节计数和寻道指针,此方法不会创建填充字节来增加查找指针的流。 在这种情况下,必须调用 IStream::SetSize 方法以增加流的大小并写入填充字节。

即使发生错误, 印刷电路板 参数也可以具有值。

在 COM 提供的实现中,流对象并不稀疏。 任何填充字节最终都会在磁盘上分配并分配给流。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 objidl.h
Library Uuid.lib
DLL Ole32.dll

另请参阅

ISequentialStream::Read

IStorage::OpenStream

IStream

IStream - 复合文件实现

STGMOVE