iDiscFormat2Data::Write 方法 (imapi2.h)

将数据流写入设备。

注意 若要成功写入,传入流的大小必须是扇区大小 2048 的倍数。 这包括利用与 IMAPI 未创建的 .iso 映像关联的流的操作。

 

语法

HRESULT Write(
  [in] IStream *data
);

parameters

[in] data

要写入的数据流的 IStream 接口。

返回值

成功后返回S_OK,但实现后可能会返回其他成功代码。 以下错误代码通常在操作失败时返回,但不表示唯一可能的错误值:

返回代码 说明
E_IMAPI_RECORDER_COMMAND_TIMEOUT
设备未能在超时期限内接受该命令。 这可能是由于设备进入了不一致状态,或者可能需要增加命令的超时值。

值:0xC0AA020D

E_IMAPI_RECORDER_INVALID_RESPONSE_FROM_DEVICE
设备报告了命令的意外或无效数据。

值:0xC0AA02FF

E_IMAPI_RECORDER_MEDIA_UPSIDE_DOWN
媒体是倒置插入的。

值:0xC0AA0204

E_IMAPI_RECORDER_MEDIA_BECOMING_READY
驱动器报告它正在准备就绪。 请稍后重试请求。

值:0xC0AA0205

E_IMAPI_RECORDER_MEDIA_NO_MEDIA
设备中没有媒体。

值:0xC0AA0202

E_IMAPI_RECORDER_MEDIA_FORMAT_IN_PROGRESS
媒体当前正在格式化。 请在尝试使用媒体之前等待格式完成。

值:0xC0AA0206

E_IMAPI_RECORDER_MEDIA_BUSY
驱动器报告它正在执行长时间运行的操作,例如完成写入。 驱动器可能长时间不可用。

值:0xC0AA0207

E_IMAPI_LOSS_OF_STREAMING
写入失败,因为驱动器接收数据的速度不够快,无法继续写入。 将源数据移动到本地计算机、降低写入速度或启用“缓冲区不足可用”设置可以解决此问题。

值:0xC0AA0300

E_IMAPI_RECORDER_MEDIA_INCOMPATIBLE
媒体不兼容或物理格式未知。

值:0xC0AA0203

E_IMAPI_RECORDER_DVD_STRUCTURE_NOT_PRESENT
DVD 结构不存在。 这可能是由于使用的驱动器/介质不兼容导致的。

值:0xC0AA020E

E_IMAPI_RECORDER_NO_SUCH_MODE_PAGE
设备报告请求的模式页 (,并且不存在类型) 。

值:0xC0AA0201

E_IMAPI_RECORDER_INVALID_MODE_PARAMETERS
驱动器报告不支持 MODE SELECT 命令的模式页中提供的参数组合。

值:0xC0AA0208

E_IMAPI_RECORDER_MEDIA_WRITE_PROTECTED
驱动器报告介质受到写入保护。

值:0xC0AA0209

E_IMAPI_RECORDER_MEDIA_SPEED_MISMATCH
媒体的速度与设备不兼容。 这可能是由于使用高于或低于设备支持的速度范围的媒体造成的。

值:0xC0AA020F

HRESULT_FROM_WIN32 (ERROR_INVALID_HANDLE)
指定的句柄无效。

值:6

HRESULT_FROM_WIN32 (ERROR_DEV_NOT_EXIST)
指定的网络资源或设备不再可用。

值:55

E_IMAPI_RECORDER_LOCKED
上次操作期间与此记录器关联的设备已被独占锁定,导致此操作失败。

值:0xC0AA0210

E_IMAPI_UNEXPECTED_RESPONSE_FROM_DEVICE
写入失败,因为驱动器返回了无法从中恢复的错误信息。

值:0xC0AA0301

E_IMAPI_RECORDER_REQUIRED
该请求要求选择当前光盘录制器。

值:0xC0AA0003

S_IMAPI_ROTATIONADJUSTED
驱动器不支持请求的旋转类型,并且调整了旋转类型。

值:0x00AA0005

S_IMAPI_SPEEDADJUSTED
驱动器不支持请求的写入速度,并且速度已调整。

值:0x00AA0004

S_IMAPI_BOTHADJUSTED
驱动器不支持请求的写入速度和旋转类型,它们均已调整。

值:0x00AA0006

E_IMAPI_DF2DATA_RECORDER_NOT_SUPPORTED
此设备不支持此光盘格式所需的操作。

值:0xC0AA0407

E_IMAPI_REQUEST_CANCELLED
请求已被取消。

值:0xC0AA0002

E_IMAPI_DF2DATA_WRITE_IN_PROGRESS
当前正在进行写入操作。

值:0xC0AA0400

E_IMAPI_DF2DATA_STREAM_NOT_SUPPORTED
提供的 IStream 对象的大小无效。 大小必须是扇区大小的倍数,即 2048。

值:0xC0AA0403

E_IMAPI_DF2DATA_MEDIA_IS_NOT_SUPPORTED
不支持当前媒体类型。

值: (HRESULT) 0xC0AA0406

E_INVALIDARG
一个或多个参数无效。

值:0x80070057

E_POINTER
指针无效。

值:0x80004003

E_FAIL
未知故障。

值:0x80004005

E_OUTOFMEMORY
未能分配所需的内存。

值:0x8007000E

E_NOTIMPL
未实现。

值:0x80004001

注解

在调用此方法之前,必须调用以下方法:

如果以下方法的默认值不适合应用程序,则还应考虑调用这些方法: 此方法是同步的,这意味着在将提供的 IStream 记录到媒体之前,不会返回控件。 若要确定写入操作的进度,必须实现 DDiscFormat2DataEvents 接口。 有关演示如何在脚本中实现事件处理程序的示例,请参阅 使用事件监视进度

在按顺序录制的光盘上,提供的 IStream 将录制为新会话。 在可重写光盘上,始终从扇区 0 开始记录提供的 IStream ,但提供 IStream 接口的对象也可以提供 IBlockRangeList 接口,其中列出了需要记录的扇区。 IBlockRangeList 接口用于避免重写在多线程方案中未更改的扇区。 如果提供 IStream 的对象不提供 IBlockRangeList,则假定需要记录整个 IStream

要求

   
最低受支持的客户端 Windows Vista、Windows XP 和 SP2 [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 imapi2.h

另请参阅

DDiscFormat2DataEvents

IDiscFormat2Data

IDiscFormat2Data::CancelWrite