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 |