IDiscRecorder2Ex::SendCommandSendDataToDevice 方法 (imapi2.h)
将 MMC 命令及其关联的数据缓冲区发送到记录设备。
语法
HRESULT SendCommandSendDataToDevice(
[in] BYTE *Cdb,
[in] ULONG CdbSize,
[out] BYTE [18] SenseBuffer,
[in] ULONG Timeout,
[in] BYTE *Buffer,
[in] ULONG_IMAPI2_NONZERO BufferSize
);
参数
[in] Cdb
要发送到设备的命令数据包。
[in] CdbSize
要发送的命令数据包的大小(以字节为单位)。 必须介于 6 到 16 个字节之间。
[out] SenseBuffer
检测记录设备返回的数据。
[in] Timeout
允许发送命令接收结果的时间限制(以秒为单位)。
[in] Buffer
包含与 send 命令关联的数据的缓冲区。 不得为 NULL。
[in] BufferSize
要发送的数据缓冲区的大小(以字节为单位)。 不得为零。
返回值
S_OK或以下值之一可以在成功时返回,但其他成功代码可能会作为实现的结果返回:
返回代码 | 说明 |
---|---|
|
设备使命令失败,但返回感知数据。
值:0x00AA0200 |
以下错误代码通常在操作失败时返回,但不表示唯一可能的错误值:
返回代码 | 说明 |
---|---|
|
指针无效。
值:0x80004003 |
|
未知故障。
值:0x80004005 |
|
驱动器不支持 GET CONFIGURATION 命令。
值:0xC0AA020C |
|
设备不支持请求的功能页。
值:0xC0AA020A |
|
未能分配所需的内存。
值:0x8007000E |
|
支持请求的功能页,但未标记为当前。
值:0xC0AA020B |
|
设备未能在超时期限内接受该命令。 这可能是由于设备进入了不一致状态,或者可能需要增加命令的超时值。
值:0xC0AA020D |
|
设备报告了命令的意外或无效数据。
值:0xC0AA02FF |
|
媒体是倒置插入的。
值:0xC0AA0204 |
|
驱动器报告它正在准备就绪。 请稍后重试请求。
值:0xC0AA0205 |
|
设备中没有媒体。
值:0xC0AA0202 |
|
媒体当前正在格式化。 请在尝试使用媒体之前等待格式完成。
值:0xC0AA0206 |
|
驱动器报告它正在执行长时间运行的操作,例如完成写入。 驱动器可能长时间不可用。
值:0xC0AA0207 |
|
写入失败,因为驱动器接收数据的速度不够快,无法继续写入。 将源数据移动到本地计算机、降低写入速度或启用“缓冲区不足可用”设置可以解决此问题。
值:0xC0AA0300 |
|
媒体不兼容或物理格式未知。
值:0xC0AA0203 |
|
DVD 结构不存在。 这可能是由于使用的驱动器/介质不兼容导致的。
值:0xC0AA020E |
|
设备报告请求的模式页 (,并且不存在类型) 。
值:0xC0AA0201 |
|
驱动器报告不支持 MODE SELECT 命令的模式页中提供的参数组合。
值:0xC0AA0208 |
|
驱动器报告介质受到写入保护。
值:0xC0AA0209 |
|
媒体的速度与设备不兼容。 这可能是由于使用高于或低于设备支持的速度范围的媒体造成的。
值:0xC0AA020F |
|
指定的句柄无效。
值:6 |
|
指定的网络资源或设备不再可用。
值:55 |
|
上次操作期间与此记录器关联的设备已被独占锁定,导致此操作失败。
值:0xC0AA0210 |
注解
有关命令数据包、感知数据和输入数据缓冲区的内容的详细信息,请参阅 ftp://ftp.t10.org/t10/drafts/mmc5 中最新修订的 MMC 规范。
客户端定义的命令 (用于此方法的 CDB) 长度必须介于 6 到 16 个字节之间。 此外,每个命令的大小必须与下表中定义的操作代码定义的大小匹配。
CDB 操作代码范围 | CDB 组 | 所需的 CDB 大小 |
---|---|---|
0x00 — 0x1F | 0 | 6 字节 |
0x20 — 0x3F | 1 | 10 字节 |
0x40 — 0x5F | 2 | 10 字节 |
0x60 — 0x7F | 3 | 将来将对此操作代码范围强制实施标准指定的大小要求。 |
0x80 — 0x9F | 4 | 16 个字节 |
0xA0 — 0xBF | 5 | 12 字节 |
0xC0 — 0xDF | 6 | 供应商唯一 - 允许的任何大小 |
0xE0 — 0xFF | 7 | 供应商唯一 - 允许的任何大小 |
一些非常早期的设备使用供应商唯一的操作码,因此某些操作码无法以这种方式进行验证。 以下操作码仍然有效,仅验证大小是否介于 6 到 16 个字节之间:
0x02、0x05、0x06、0x09、0x0C、0x0D、0x0E、0x0F、0x10、0x13、0x14、0x19、0x20、0x21、0x22、0x23、0x24、0x26、0x27、0x29、0x2C、0x2D
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista、Windows XP 和 SP2 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | imapi2.h |