光学徽标测试-BD

命令 说明

OpticalLogoTest.exe/drive [StorageDriveLetter]: \/log [日志] [AdditionalParams]/profile [profile]/RunTestCaseTypes [RunTestCaseTypes]

运行测试。

注意

   有关此测试二进制文件的命令行帮助,请键入 /h

 

命令语法

命令选项 说明

驱动器

测试光学设备驱动器号。

示例:/drive e:\\

适配器 (adapter)

用于适配器测试) 的路径 (。

示例:/adapter \ "PCI\\ VEN_8086 & DEV_27DF & SUBSYS_01AD1028 & REV_01 \\ 3 & 172E68DD & 0 & F9 \"

PrimaryTestDrive

测试光学设备驱动器号。

示例:/PrimaryTestDrive e:\\

SecondaryTestDrive

辅助光盘测试设备驱动器号。

示例:/Secondary Test Drive f:\\

WriterDrive

需要用于测试只读驱动器的编写器的驱动器号。

示例:/WriterDrive f:\\

PrimaryDriveTray

主光学设备托盘功能。

示例:/PrimaryDriveTray SupportsEjectInject

SecondaryDriveTray

辅助光盘设备托盘功能。

示例:/SecondaryDriveTray SupportsEjectInject

WriterDriveTray

写入器驱动器托盘功能。

示例:/WriterDriveTray SupportsEjectInject

个人资料

运行测试用例指定的配置文件。 配置文件 ID 应为十进制,中间用逗号分隔。

示例:/profile 9、10、16

seed

用于生成随机测试数据的种子值。

例如:/seed 1000

RunTestCaseTypes

仅运行测试用例的类别。

示例:/RunTestCaseTypes 设备

RunTestCase

仅运行此测试用例。

示例:/RunTestCase 查询

自动化

使用机器人更改媒体在自动化模式下运行。

示例:/Automation

AutomationConfigFile

用于指定媒体的 bin 位置的配置文件。

示例:/AutomationConfigFile OpticalLogoTest.exe.config

校准

校准用于更改媒体的机器人。

示例:/Calibrate

徽标

要测试的认证要求的级别。

示例:/logo basic 或/logo premium

ReuseMedia

重复使用非空白媒体进行测试。 如果该媒体支持多会话,则测试不会预计媒体为空。 此选项仅用于测试。 不允许用于认证。

示例:/ReuseMedia

SkipFullBlank

跳过完整的空白方案,只测试最小空白。

示例:/SkipFullBlank

SkipManualTestCases

跳过需要手动交互的测试用例。

示例:/SkipManualTestCases

RunDataDirectionFlagScenario

使用错误的数据方向标志来验证命令。

示例:/RunDataDirectionFlagScenario

调试器

提示附加调试器,该调试器提供了在进一步执行程序之前允许附加调试器的时间。

示例:/Debugger

详细程度

日志记录详细程度。

示例:/Verbosity Verbose

log

日志文件名称

默认值: OpticalLogoTest. wtl

示例:/log mytestlog. wtl

EnableImapiv2Trace

启用 IMAPIv2 软件跟踪。

示例:/EnableImapiv2Trace

Imapiv2TraceGuidsFile

IMAPIv2 跟踪 Guid 文件,其中包含需要记录跟踪的组件 Guid 的完整列表

默认值: imapiv2-guids.txt

示例:/IMAPIv2TraceGuidsFile imapiv2-guids.txt

Imapiv2TraceLogFile

IMAPIv2 输出跟踪日志文件。

默认值: imapiv2-tracelog

示例:/IMAPIv2TraceLogFile imapiv2-tracelog

cmdPerfTraceAnalysis

运行命令性能分析。

示例:/cmdPerfTraceAnalysis

cmdPerfTraceGuidsFile

性能跟踪 Guid 文件,其中包含跟踪性能数据的组件的 Guid

默认值: perf-guids.txt

示例:/cmdPerfTraceGuidsFile perf-guids.txt

cmdPerfTraceLogFile

性能输出跟踪日志文件

默认值: perf-tracelog

示例:/cmdPerfTraceLogFile perf-tracelog

cmdPerfTraceTmfFile

性能跟踪格式说明文件。

示例:/cmdPerfTraceTmfFile perf-tracelog. tmf

 

文件列表

文件 位置

ataportlogotrace.tmf

[testbinroot] >\nttest\driverstest\storage\optical\setup\tracing\

autoloader.dll

[testbinroot] >\nttest\driverstest\storage\optical\autoloader\

DataPacket.dll

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

DeviceTestCases.dll

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

DiscManagerLib.dll

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

microsoft.storage.imapi.dll

[testbinroot] >\nttest\driverstest\storage\interop\imapi\

ModularTestCase.dll

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

OpticalLogoTest.exe

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

OpticalTestHarness.dll

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

OpticalTestLib.dll

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

ProfileTestCases.dll

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

ScenarioTestCases.dll

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

ScsiLib.dll

[testbinroot] >\nttest\driverstest\storage\wdk\optical\test\

storageinteroputil.dll

[testbinroot] >\nttest\driverstest\storage\interop\utils\

tracefmt.exe

[osbinroot] >\idw\

storagedevices.dll

[testbinroot] >\nttest\driverstest\storage\wdk\

TraceLib.dll

[osbinroot] >\nttest\driverstest\storage\wdk\optical\test\

tracelog.exe

[osbinroot] >\idw\

 

参数

参数名称 参数说明
StorageDriveLetter 测试设备驱动器号
profile
LLU_NetAccessOnly 用于访问测试文件共享的用户帐户。
LLU_LclAdminUsr 用于运行测试的用户帐户。
WDKDeviceID 要测试的设备的实例路径
log
RunTestCaseTypes
AdditionalParams

 

 

 

此测试验证光学设备是否符合标准并满足 Windows 光驱要求。

测试详细信息

   
规范
  • 装置.存储。BluRayReader. 配置文件
平台
  • Windows 10, (x86 的客户端版本)
  • Windows 10, (x64 的客户端版本)
  • Windows Server 2016 (x64)
支持的版本
  • Windows 10
  • Windows 10 版本 1511
  • Windows 10 版本 1607
  • Windows 10 版本 1703
  • Windows 10 版本 1709
  • Windows 10 版本 1803
  • Windows 10 版本 1809
  • Windows 10 版本 1903
  • 下一次更新到 Windows 10
预计运行时间 (分钟) 30
类别 方案
超时 (分钟) 1800
需要重启 false
需要特殊配置 false
Type automatic

 

其他文档

此功能区域中的测试可能包含附加文档,包括先决条件、安装和故障排除信息,可在以下主题中找到 () :

运行测试

在运行测试之前,如测试要求: 光驱测试先决条件中所述完成测试设置。

测试显示一个 "配置" 对话框,用于获取主要和辅助驱动器托盘配置。 用户必须从 "写入器驱动器" 对话框的 "驱动器" 列表中选择相同的辅助驱动器,并且应选择驱动器托盘功能,它是否支持自动弹出和自动加载托盘。

注意

   在测试计算机上运行的 i/o 密集型应用程序可能会影响光学徽标测试性能测量方案。 请确保在测试运行时没有其他应用程序在测试计算机上运行。

 

故障排除

有关 hlk 测试失败的一般故障排除,请参阅Windows hlk 测试失败疑难解答

有关疑难解答信息,请参阅设备故障排除存储测试

下面是有关此测试的已知问题:

  • 默认情况下禁用总线重置测试方案。

    默认情况下,测试不会在总线重置时验证正确的设备行为。

    如果发生总线重置,则驱动器预期会正确重置,恢复联机状态,并且应正常工作。 某些缺陷驱动器不会正确重置,也不会在总线重置后工作。 这不是正确实现。 启用此特定测试方案后,命令验证测试用例 (设备和配置文件测试事例) 发送具有错误 SRB 数据方向标志的命令。 这通常会停止总线,并最终导致端口驱动程序在给定的超时期限后重置总线。

    大多数存储控制器不能正确地支持此测试方案。 在总线重置后,不正确实现的存储控制器将不会恢复。 如果发生这种情况,测试用例可能会因为存储控制器而失败,即使设备已正确实现。 此测试无法将设备故障与存储控制器故障区分开来。 因此,默认情况下已禁用测试此特定方案。 若要启用测试此特定方案,应使用 "RunDataDirectionFlagScenario" 命令行选项运行测试可执行文件。

详细信息

驱动器应支持以下命令:

  • 获取不带媒体) 的配置 (

  • 获取事件状态通知

  • 查询

  • 机制状态

  • 模式感知

  • 阻止允许删除

  • 请求意义

  • 开始停止单元

  • 测试单元准备就绪

如果驱动器对于其支持的功能和配置文件是必需的,则该驱动器应支持以下命令。

  • 获取具有媒体) 的配置 (

  • 获取性能

  • 读取缓冲区容量

  • 读取容量

  • 读取光盘信息

  • 读取格式化容量

  • 读取 Toc Pma Atip

  • 发送 Opc 信息

  • 设置 CD 速度

  • Read10

如果与这些方案相关联的命令对于其支持的功能和配置文件是必需的,则该驱动器应支持以下方案。

  • 事件状态通知

  • 写入

    • 顺序模式

    • 数据包模式

    • 受限覆盖

    • 多会话支持

  • 音频媒体 (写入音频轨道)

  • 空白

  • 唯一驱动器序列号

  • 实时流式处理

  • 音频媒体无缝原始记录

测试用例分为以下三组:

  • 设备测试用例。 以下命令可验证适用于设备的测试用例:

    • 获取不带媒体) 的配置 (

    • 获取事件状态通知

    • 查询

    • 机制状态

    • 模式感知

    • 阻止允许删除

    • 请求意义

    • 开始停止单元

    • 测试单元准备就绪

  • 分析测试用例。 以下命令将在所有适用的配置文件上测试验证测试用例:

    • 获取配置

    • 获取性能

    • 读取容量

    • 读取缓冲区容量

    • 读取光盘信息

    • 读取格式化容量

    • 读取 TOC PMA ATIP

    • 发送 OPC 信息

    • 设置 CD 速度

    • READ10

  • 使用方案测试用例。 使用 IMAPI.EXE 刻录引擎接口测试以下方案:

    • 事件状态通知

    • 空白

    • 写入/多会话

    • 音频媒体

    • 写入双层媒体

    • 驱动器序列号

    • 只读驱动器

    • 实时流式处理

    • 音频媒体无缝原始记录

此测试包括以下测试用例:

  • 获取不带媒体) 的配置命令 (

  • 获取事件状态通知命令

  • 查询命令

  • 机制状态命令

  • MODE SENSE 命令

  • 阻止允许删除命令

  • 请求感知命令

  • 启动停止单元命令,弹出 & 负载性能

  • 测试单元就绪命令

  • 获取配置命令

  • 获取性能

  • 读取容量命令

  • 读取缓冲区容量命令

  • 读取光盘信息命令

  • 读取格式化容量命令

  • READ TOC/PMA/ATIP 命令

  • 发送 OPC 信息命令

  • 设置 CD 速度命令

  • READ10 命令

  • EVENT NOTIFICATION

  • 编写测试

  • 音频媒体 (写入音频轨道)

  • 空白

  • 写入双层媒体

  • 只读驱动器

  • 驱动器序列号

  • 实时流式处理

  • 写入速度度量

  • 音频媒体无缝原始记录

获取不带媒体) 的配置命令 (

说明: 此测试旨在确保当托盘中没有介质时,驱动器正确地响应 GET CONFIGURATION 命令。

适用的媒体: 设备支持的任何介质

测试用例步骤:

  1. 通过发送启动停止单元命令弹出托盘。

  2. 等待托盘打开。

  3. 发送带有4个字节的响应数据的 GET CONFIGURATION 命令以获取功能标头数据长度。 如果命令失败,则打印检测密钥并使测试用例失败。 目的:允许软件探测命令的支持。

  4. 检查设备标头中的驱动器是否未报告当前配置文件。 如果驱动器未将当前配置文件重现为 "无当前配置文件",则测试用例失败。

  5. 使用 RT = 00b,并使用步骤3中设备返回的正确数据长度来发送 GET CONFIGURATION 命令。 目的:允许软件检索驱动器支持的全部功能列表。

  6. 检查设备标头中的驱动器是否未报告当前配置文件。 如果驱动器未将当前配置文件重现为 "无当前配置文件",则测试用例失败。

  7. 获取当前配置文件位集的响应中的配置文件列表功能描述符,并使该测试用例失败,前提是配置文件描述符的当前配置文件位设置为1。

  8. 发送具有20个字节的响应数据长度为20个字节、RT = 01b、起始功能号为 0010h (随机可读功能) 。 如果命令失败,或者如果不返回随机的可读功能说明符,则打印合适的感知密钥并使测试用例失败。 目的:允许软件探测特定功能货币 (当前) 。

  9. 可有可无将数据方向标志设置为 "到设备" 的 GET CONFIGURATION 命令和响应数据长度为4个字节,以获取功能头数据长度。 如果命令失败,则打印检测密钥并使测试用例失败。 目的:确保设备处理具有错误数据方向的命令。

  10. 注入托盘。

  11. 等待设备进入就绪状态

  12. 发送获取配置命令,响应数据长度为16字节,RT = 01b,开始功能编号 = 0003h (可移动介质功能) 。 如果命令失败,则打印相应的感知密钥并使测试用例失败。 如果此命令成功:

    • 如果驱动器支持自动弹出机制,请检查是否设置了 "弹出" 位。

    • 如果驱动器支持自动注入机制,请检查是否设置了 "Load" 位。

Result: 驱动器应正确响应获取配置命令

获取事件状态通知命令

说明: 验证驱动器是否支持 "获取事件状态通知" 命令

适用的媒体: 设备支持的任何介质

测试用例步骤:

  1. 发送获取事件状态通知命令,其中包含 CDB 中的以下值。

    • 通知类请求 = 0x7E (操作更改,电源管理,外部请求,媒体,多主机,设备忙) ,

    • 轮询 = 1

    • 分配长度等于响应标头的大小 (4 个字节)

  2. 如果命令失败,则测试用例失败

  3. 在响应中检查支持哪些事件

  4. 可有可无向 "数据方向" 标志设置为 "到设备" 的 "发送获取事件状态通知" 命令和 CDB 中的以下值。

    • 通知类请求 = 0x7E (操作更改,电源管理,外部请求,媒体,多主机,设备忙) ,

    • 轮询 = 1

    • 分配长度等于响应标头的大小 (4 个字节)

  5. 如果命令失败,则测试用例失败

  6. 在响应检查中,事件数据长度为0x6,清除了 NEA 位,通知类不为零,并且支持的事件类与步骤3相同。 否则,测试用例失败。

  7. 发送获取事件状态通知命令,其中包含 CDB 中的以下值。

    • 通知类请求 = 0x7E (操作更改,电源管理,外部请求,媒体,多主机,设备忙) 。

    • 轮询 = 1

    • 分配长度等于响应标头的大小 (4 个字节)

  8. 如果命令失败,则测试用例失败。

Result: 驱动器应该正确响应获取事件状态通知命令。

查询命令

说明: 验证驱动器是否支持查询命令。

适用的媒体: 设备支持的任何介质

测试用例步骤:

  1. 发送查询命令,分配长度等于08h。 目的:允许软件探测所需的响应缓冲区大小。

  2. 如果此命令成功,则检查标头中是否有其他长度的响应。 额外的长度必须是32d 或更大的 [MMC5r04 6.9.2]。

  3. 重新发送查询命令,分配长度设置为5个字节,比步骤2中的额外长度多。

  4. 如果此命令成功,请确保响应数据字段与 MMC5r04 表320中指定的值匹配。

  5. 检查供应商标识、产品标识和产品修订级别是否不为 null。

    • 目的:按软件的基本标识。
  6. 检查以下值是否匹配:

    • 设备类型 = 5

    • 设备类型限定符 = 0

    • 可移动介质 = 1

    • 响应数据格式 = 2

    • 层次结构支持 = 0

    • Normal ACA = 0

    • 保护 = 0

    • 第三方副本 = 0

    • 目标端口组支持 = 0

    • 访问控制协调器 = 0

    • 支持的 SCC = 0

    • Addr16 = 0

    • 中变换器 = 0

    • 多端口 = 0

    • VS1 = 0

    • 机箱服务 = 0

    • BQue = 0

    • VS2 = 0

    • 命令队列 = 0

    • 链接命令 = 0

    • 同步 = 0

    • Wide16 = 0

  7. 在 CDB 中发送具有以下值的"查询"命令:

    • EVPD = 0

    • 分配长度 = 240

  8. 在 CDB 中发送具有以下值的"查询"命令:

    • EVPD = 1

    • 分配长度 = 240

  9. 如果命令成功,则比较步骤 7 和步骤 8 的响应,如果两者相等,则测试用例失败。

  10. 发送一个随机次数的、随机分配长度介于 10 到 25 之间的一个查询命令。 如果命令失败,则测试用例失败。

  11. [可选]将数据方向标志设置为"到设备"且 CDB 中具有以下值的"查询"命令发送

    • EVPD = 0

    • 分配长度 = 240

结果: 驱动器应正确响应"查询"命令。

"机制状态"命令

描述: 验证驱动器是否支持"机制状态"命令

适用的媒体: 设备支持的任何媒体

测试用例步骤:

  1. 发送分配长度为 0 字节的 MECHANISM STATUS 命令 (未指定) 。 如果命令失败,请打印检测键,使测试用例失败。

    • 目的:允许软件探测对命令的支持
  2. 弹出托盘。

  3. 等待设备返回 Sense Key 的 (数据:0x2、ASC:0x3A、ASCQ:0x02)

  4. 发送分配长度为 8 字节的 MECHANISM STATUS 命令。

  5. 检查 Door Open 位是否为 1b。

    • 目的:允许软件检测门是打开还是 (打开) 。
  6. 注入托盘

  7. 等待设备准备就绪

  8. 发送分配长度为 8 字节的 MECHANISM STATUS 命令。

  9. 检查 Door Open 位是否为 0b。

    • 目的:允许软件检测门是打开还是 (关闭) 。
  10. 创建一个 8 字节缓冲区,并填充随机数据。

  11. [可选]发送"机制状态"命令,其中数据方向标志设置为"到设备",分配长度为 8 字节。 将步骤 11 中的缓冲区传递给设备。

结果: 驱动器应正确响应"机制状态"命令

MODE SENSE 命令

描述: 验证驱动器是否支持 Mode Sense 命令。

适用的媒体: 设备支持的任何媒体

测试用例步骤:

  1. 在 CDB 中发送具有以下值的 MODE SENSE 命令,获取所有受支持的模式页:

    • 页面控件 = 0

    • 禁用块描述符 = 1

    • 页面代码 = 0x3F

    • 分配长度 = 0x8000

  2. 检查响应中的以下值:

    • 模式参数标头中的块描述符长度为零

    • 每个模式页数据的页面长度等于 MMC5 中记录的值。

  3. 验证每个报告页的"模式"页数据

  4. 使用 CDB 中的以下值发送每个报告页的 Mode Sense 命令:

    • 页面控件 = 0

    • 禁用块描述符 = 1

    • 分配长度 = 步骤 2 中驱动器报告的页长度

  5. 检查响应中的以下值:

    • 模式参数标头中的块描述符长度为零。

    • 模式页眉中的页面代码与请求的页面代码匹配。

    • 模式页眉中的页长度等于 MMC5 中的值文档。

  6. 发送分配长度为 0xFFF0

  7. 检查响应中的以下值:

    • 模式参数标头中的块描述符长度为零

    • 模式页眉中的页面代码与请求的页面代码匹配

  8. 发送分配长度为 0x0A

  9. 检查响应是否与最大响应大小的字节字节匹配 (0x0A) 分配长度等于0xFFF0。

  10. 将 Mode Sense 命令发送随机次数,介于 10 到 25 之间,在 0x0A 和 0xFFF0。

  11. 检查响应是否匹配字节字节(最大响应大小 (介于 0x0A 和 0xFFF0) 之间且分配长度响应等于 0xFFF0。

  12. [可选]发送 MODE SENSE 命令,并将数据方向标志设置为"到设备",在 CDB 中具有以下值,获取所有受支持的模式页:

    • 页面控件 = 0

    • 禁用块描述符 = 1

    • 页面代码 = 0x3F

    • 分配长度 = 0x8000

结果: 驱动器应正确响应 GET CONFIGURATION 命令

PREVENT ALLOW MEDIUM REMOVAL 命令

描述: 验证驱动器是否支持 PREVENT ALLOW MEDIUM REMOVAL 命令。

适用的媒体: 设备支持的任何媒体

测试用例步骤:

  1. 发送 PREVENT ALLOW MEDIUM REMOVAL 命令,并将 prevent 位设置为 1,将永久位设置为 0。 这会锁定驱动器。 如果命令失败,则打印检测键并失败测试用例。

  2. 发送 start stop unit 命令,将 LocEj 位设置为 1,将即时位设置为 0,将 Start 位设置为零。 这会尝试弹出该磁盘。如果驱动器未拒绝具有感知数据的命令,0x05 0x53 0x02则失败。

  3. 发送"测试单元就绪"命令并确保它成功。

  4. 要求用户按弹出按钮弹出媒体。

  5. 发送"测试单元就绪"命令,并确保它仍然 (打开测试) 。

  6. 发送"防止允许中等删除"命令,将"阻止位"设置为"0",将"永久性位"设置为"0"。 这会解锁驱动器。 如果命令失败,则打印检测键并失败测试用例。

  7. 要求用户按弹出按钮弹出媒体

  8. 等待设备打开门 - 发送"测试单元就绪"命令,如果命令成功,请等待 1 秒,然后重试,直到 (02/3A/02) 。 30 秒后超时。

  9. 如果驱动器支持自动加载机制,请将托盘注入回驱动器,否则请用户将托盘插入驱动器。

  10. 等待设备准备就绪

  11. [可选]发送 PREVENT ALLOW MEDIUM REMOVAL 命令,并将数据方向标志设置为"到设备",并将随机数据传递到随机大小缓冲区中。

结果: 驱动器应正确响应 PREVENT ALLOW MEDIUM REMOVAL 命令。

请求感知命令

说明: 验证驱动器是否支持请求识别命令。

适用的媒体: 设备支持的任何介质

测试用例步骤:

  1. 发送 "请求识别" 命令,将描述符位设置为零,将 "分配长度" 设置为 "252"。 驱动器应以固定格式感知数据进行响应。

  2. 如果命令失败,则打印检测密钥并使测试用例失败。

  3. 如果响应代码为0x70 或0x71,则测试通过,否则测试将失败。

  4. 可有可无发送 "请求感知" 命令,将数据方向标志设置为 "到设备",将描述符位设置为零,将 "分配长度" 设置为 "252"。 驱动器应以固定格式感知数据进行响应。

Result: 驱动器应该正确响应 "请求识别" 命令。

启动停止单元命令,弹出 & 负载性能

说明: 验证驱动器是否支持启动停止单元命令。

适用的媒体: 设备支持的任何介质

测试用例步骤:

  1. 在 CDB 中发送 "开始停止单元" 命令和下列值

    • Immediate = 0、LoadEject = 0、Start = 0、PowerConditions = 0

    • Immediate = 0,LoadEject = 0,Start = 1,PowerConditions = 0

    • Immediate = 1,LoadEject = 0,Start = 0,PowerConditions = 0

    • Immediate = 1,LoadEject = 0,Start = 1,PowerConditions = 0

  2. 对于这两种组合,该命令应会成功。

  3. 如果驱动器支持弹出托盘,请在 CDB 中发送 "开始停止单元" 命令和以下值,以弹出托盘

    • Immediate = 1,LoadEject = 1,Start = 0,PowerConditions = 0
  4. 等待设备打开 "门-发送测试单元就绪" 命令,如果命令成功,则等待5秒钟,然后重试,直到失败,并 (02/3A/02) 。 10秒后超时。

  5. 如果驱动器支持加载托盘 (自动注入) ,则在 CDB 中发送具有以下值的 "开始停止单元" 命令,以注入托盘:

    • Immediate = 1,LoadEject = 1,Start = 1,PowerConditions = 0
  6. 如果驱动器不支持加载托盘,则要求用户将托盘插回驱动器。

  7. 等待设备就绪-发送 "测试单元就绪" 命令,如果命令失败并带有一个感知密钥,则等待1秒,然后重试,直到成功为止。 30秒后超时。 高级徽标:超时:20秒。

  8. 在 CDB 中发送具有以下值的 "开始停止单元" 命令,以弹出托盘:

    • Immediate = 0、LoadEject = 1、Start = 0、PowerConditions = 0
  9. 等待设备打开 "门-发送测试单元就绪" 命令,如果命令成功,则等待1秒,然后重试,直到失败,并 (02/3A/02) 。 30秒后超时。

  10. 要求用户删除介质

  11. 如果驱动器支持加载托盘 (自动注入) ,则在 CDB 中发送具有以下值的 "开始停止单元" 命令,以注入托盘:

    • Immediate = 0、LoadEject = 1、Start = 1、PowerConditions = 0
  12. 请确保命令失败,并显示 "未就绪"/"中不存在"/"托盘关闭" (02/3A/01)

  13. 如果驱动器支持弹出托盘,请在 CDB 中发送 "开始停止单元" 命令和以下值,以弹出托盘:

    • Immediate = 0、LoadEject = 1、Start = 0、PowerConditions = 0
  14. 要求用户将媒体放入托盘。

  15. 如果驱动器不支持加载托盘,则要求用户将托盘插回驱动器并等待设备准备就绪。 如果驱动器支持加载托盘 (自动插入) ,然后在 CDB 中发送具有以下值的 "开始停止单元" 命令,以注入托盘并等待设备准备就绪。

    • Immediate = 0、LoadEject = 1、Start = 1、PowerConditions = 0
  16. 可有可无发送 "数据方向" 标志设置为 "到设备" 的启动停止单元命令。 发送随机大小的缓冲区,其中包含随机数据,并在 CDB 中包含以下值。

    • Immediate = 0、LoadEject = 0、Start = 0、PowerConditions = 0

Result: 驱动器应该正确响应 START STOP UNIT 命令。

测试单元就绪命令

说明: 验证驱动器是否支持测试单元就绪命令。

适用的媒体: 设备支持的任何介质

测试用例步骤:

  1. 发送测试单元就绪命令。

  2. 如果命令失败,则打印检测密钥并使测试用例失败

  3. 可有可无将数据方向标志设置为 "到设备" 并将随机大小缓冲区填充随机数据的情况发送到测试单元就绪命令。

Result: 驱动器应该正确响应 "测试单元就绪" 命令。

获取配置命令

说明: 验证驱动器是否支持所报告的配置文件的 GET CONFIGURATION 命令。

适用的媒体: 设备支持的任何介质

测试用例步骤:

  1. 发送获取配置命令,响应数据长度为0字节, (数据感知未指定) 。 如果命令失败,则打印检测密钥并使测试用例失败。

    • 目的:允许软件探测命令的支持。
  2. 发送带有4个字节的响应数据的 GET CONFIGURATION 命令以获取功能标头数据长度。 如果命令失败,则打印检测密钥并使测试用例失败。

    • 目的:允许软件探测命令的支持。
  3. 发送具有8个字节的响应数据长度的 GET CONFIGURATION 命令 (以获取标头) ,RT = 00b,起始功能号 = 0000h。 如果命令失败,或当前配置文件等于00h,则打印合适的感知密钥并使测试用例失败。

      • 允许软件探测所需的响应缓冲区大小。

      • 允许软件探测当前配置文件 (配置文件是当前) 。

  4. 如果此命令成功,请检查响应中的以下

    • 标头中的数据长度不为零,并且为4字节对齐

    • 当前配置文件数与驱动器中加载的媒体类型匹配

  5. 在步骤3,RT = 00b,开始特征号 = 0000h 的情况下,发送包含响应数据长度的 GET CONFIGURATION 命令。 阅读当前配置文件,然后在支持的配置文件列表中查找此配置文件。 确保当前配置文件与插入的媒体的配置文件类型匹配。 如果命令失败,或当前配置文件未在受支持的配置文件列表中报告为 "当前",则打印相应的感知密钥并使测试用例失败。

    • 目的:确保驱动器报告的信息一致。
  6. 使用 RT = 00b,并使用设备在步骤3中返回的正确数据长度(如果长度适合2个字节)发送 GET 配置命令。 如果长度超过2个字节,则发送包含2个字节的最大数据长度的命令。

    • 目的:允许软件检索驱动器支持的全部功能列表。
  7. 如果 length 超过2个字节,请阅读返回的最后一个完整功能描述符的功能编号,并发出带有 RT = $ 1 的附加 GET 重复操作,直到功能标头中返回的数据长度等于或小于分配的长度。 在步骤10中连接生成的功能描述符以进行验证。

  8. 对于步骤3-6 中的所有命令,请检查响应标头中的数据长度是否为 4 (4 字节对齐) 的倍数。 如果不对齐4个字节,则会失败。 目的:4个字节对齐是由软件假定的。

  9. 此外,如果命令 (s) 成功,请检查每个报告的功能版本和其他长度字段是否等于或大于 MMC 5 文档中给定功能的相应值。 例如:核心功能的版本必须是0010b 或更高版本,并且它的额外长度必须为8或更大。 目的:确保驱动器报告的信息一致。 如果报告了可移动介质功能,则该功能的版本号应为1,如 "获取配置命令" 中所指定的那样。

  10. 此外,如果命令 (s) 成功,请检查报告的受支持配置文件是否报告了每个必需的功能。

    • 目的:确保驱动器报告的元信息的一致性。
  11. 发送具有20个字节的响应数据长度为20个字节、RT = 01b、起始功能号为 0010h (随机可读功能) 。 如果命令失败,或者如果不返回随机的可读功能说明符,则打印合适的感知密钥并使测试用例失败。 目的:允许软件探测特定功能货币 (当前) 。

  12. 可有可无将数据方向标志设置为 "发送到设备" 和随机大小缓冲区(填充随机数据)发送 "获取配置" 命令。 以下值在 CDB 中设置:

    • 分配长度 = 缓冲区的大小,起始功能号 = 0000h,RT = 00b

Result: 驱动器应该正确实现适用介质类型的 GET CONFIGURATION 命令。

获取性能命令

说明: 验证驱动器是否支持所报告的配置文件的 "获取性能" 命令。

适用的媒体: 以下任何媒体:

  • CD-R

  • CD-ROM

  • CD-RW

  • DVD+R

  • DVD + R 双层

  • DVD+RW

  • DVD-RW 限制覆盖

  • DVD-RAM

  • DVD-R

  • DVD-R-R 双层 Seq

  • DVD-ROM

  • BD-R

  • BD 重

  • BD

测试用例步骤:

  1. 将获取配置命令发送到获取实时流式处理功能。 如果设置了写入速度性能描述符位,请检查响应。 如果未设置此设置,则驱动器不支持写入速度描述符。 跳过步骤6到11来验证写入速度描述符。

  2. 在 CDB 中发送具有以下值的 "获取性能" 命令,以获取零个名义读取性能说明符

    • 类型 = 0

    • 开始 LBA = 1

    • 最大描述符 = 0

    • 数据类型 = 0x10

  3. 如果命令失败,则打印检测密钥并使测试用例失败

  4. 在 CDB 中发送具有以下值的 "获取性能" 命令,以获取一个名义读取性能说明符

    • 类型 = 0

    • 开始 LBA = 1

    • 最大描述符 = 1

    • 数据类型 = 0x10

  5. 如果命令失败,则打印检测密钥并使测试用例失败

  6. 在 CDB 中发送具有以下值的 "获取性能" 命令,以获取一个名义写入性能说明符。

    • 类型 = 0

    • 开始 LBA = 1

    • 最大描述符 = 1

    • 数据类型 = 0x14

  7. 如果命令失败,则打印检测密钥并使测试用例失败

  8. 在 CDB 中发送具有以下值的 "获取性能" 命令,以获取写入速度描述符列表的数据长度

    • 类型 = 3

    • 开始 LBA = 1

    • 最大描述符 = 0

    • 数据类型 = 0x14

  9. 如果命令失败,则打印检测密钥并使测试用例失败。

  10. 发送具有以下值的 "获取性能" 命令,以获取写入速度描述符列表

    • 类型 = 3

    • 开始 LBA = 1

    • 最大描述符 = 10

    • 数据类型 = 0x14

  11. 如果命令失败,则打印检测密钥并使测试用例失败。

  12. 可有可无将 "获取性能" 命令的数据方向标志设置为 "到设备",并将随机大小的缓冲区填充为随机数据。 在 CDB 中设置以下值以获取零个名义读取性能说明符。

    • 类型 = 0

    • 开始 LBA = 1

    • 最大描述符 = 0

    • 数据类型 = 0x10

  13. 如果命令失败,则打印检测密钥并使测试用例失败。

Result: 驱动器应该正确实现适用介质类型的 "获取性能" 命令。

读取容量命令

说明: 验证驱动器是否支持所报告的配置文件的读取容量命令。

适用的媒体: 设备支持的任何介质。

测试用例步骤:

  1. 发送 "读取容量" 命令。

  2. 如果命令失败,则打印检测密钥并使测试用例失败。

  3. 如果块的长度(以字节为单位)不是2048,则测试用例失败。

  4. 可有可无通过将 "数据方向" 标志设置为 "" 到设备 "并通过随机数据填充随机大小的缓冲区来发送读取容量命令。

  5. 如果命令失败,则打印检测密钥并使测试用例失败。

Result: 驱动器应该正确实现适用介质类型的 "读取容量" 命令。

读取缓冲区容量命令

说明: 验证驱动器是否支持所报告的配置文件的 "读取缓冲区容量" 命令。

适用的媒体: 设备支持的任何介质。

测试用例步骤:

  1. 将获取配置命令发送到获取实时流式处理功能。 如果已设置读取缓冲区容量块 (RBCB) 位,请检查响应。 如果未设置此设置,则驱动器不支持读取缓冲区容量命令。 跳过该测试用例。

  2. 将块位设置为0,并将分配长度设置为等于缓冲区容量结构的大小。

  3. 如果命令失败,则打印检测密钥并使测试用例失败。

  4. 重复步骤2,将块位设置为1。

  5. 如果命令失败,则打印感知键并使命令失败。

  6. 可有可无发送 "数据方向" 标志设置为 "到设备" 的 "读取缓冲区容量" 命令,并将随机大小缓冲区填充随机数据,将块设置为零。

  7. 如果命令失败,则打印检测密钥并使测试用例失败。

Result: 驱动器应该正确实现适用介质类型的 "读取缓冲区容量" 命令。

读取光盘信息命令

说明: 验证驱动器是否支持所报告的配置文件的 "读取光盘信息" 命令。

适用的媒体: 以下任何媒体:

  • DVD+R

  • DVD+RW

  • DVD-R

  • CD-R

  • CD-RW

测试用例步骤:

  1. 发送 "读取光盘信息" 命令,分配长度为2以获取标准光盘信息大小。

  2. 如果命令失败,则打印检测密钥并使测试用例失败。

  3. 从响应中获取光盘信息长度。 如果长度小于标准光盘信息块大小 (34) ,则测试用例失败。

  4. 发送 READ DISC INFORMATION 命令,分配长度等于步骤 3 加上 2 的数据长度。

  5. 如果命令失败,则打印检测键并失败测试用例。

  6. [可选]发送 READ DISC INFORMATION 命令,其中数据方向标志设置为"到设备",随机大小缓冲区填充随机数据,分配长度设置为缓冲区大小。

结果: 驱动器应为适用的媒体类型正确实现 READ DISC INFORMATION 命令。

READ FORMAT 容量命令

描述: 验证驱动器是否支持报告配置文件的 READ FORMAT 容量命令。

适用的媒体: 以下任何介质:

  • DVD+RW

  • DVD-RW 受限覆盖

  • DVD-RAM

  • CD-RW

测试用例步骤:

  1. 将分配长度等于 4 的 READ FORMAT CAPACITYES 命令 (容量列表标头) 。

  2. 如果命令失败,则打印检测键并失败测试用例。

  3. 从响应获取容量列表长度

  4. 发送分配长度等于"容量列表长度 + 4"的 READ FORMAT CAPACITYES ("容量列表标头") 。

  5. 如果命令失败,则打印检测键并失败测试用例。

  6. 如果容量列表长度为 8 的倍数,请检查响应。

  7. [可选]发送 READ FORMAT 容量命令,其中数据方向标志设置为"到设备",随机大小缓冲区填充随机数据,分配长度设置为缓冲区大小。

结果: 驱动器应为适用的媒体类型正确实现 READ FORMAT 容量命令。

READ TOC/PMA/ATIP 命令

描述: 验证驱动器是否支持报告配置文件的 READ TOC/PMA/ATIP 命令。

适用的媒体: 以下任何介质:

  • CD-ROM

  • DVD-ROM

  • BD-ROM

测试用例步骤:

  1. 在 CDB 中发送具有以下值的 READ TOC/PMA/ATIP 命令。

    • 格式 = 0,MSF = 0,跟踪会话编号 = 1,分配长度 = 4
  2. 如果命令失败,则打印检测键并失败测试用例。

  3. [可选]发送 READ TOC/PMA/ATIP 命令,其中数据方向标志设置为"到设备",缓冲区填充了随机数据,分配长度设置为缓冲区的大小。 将 CDB 设置为以下值:

    • 格式 = 0,MSF = 0,跟踪会话编号 = 1,分配长度 = 4

结果: 驱动器应为适用的媒体类型正确实现 READ TOC/PMA/ATIP 命令

SEND OPC INFORMATION 命令

说明:[ 此内容尚不可用。]

适用的媒体: 以下任何介质:

  • DVD-RW 受限覆盖

  • DVD-R

  • CD-RW

  • CD-R

测试用例步骤:

  1. 发送 SEND OPC INFORMATION 命令,DoOpc 设置为 1

  2. 如果命令失败,则打印检测键并失败测试用例。

  3. [可选]发送 SEND OPC INFORMATION 命令,DoOpc 设置为 1,数据方向标志设置为"到设备",随机大小缓冲区填充随机数据。 "分配长度"设置为缓冲区的大小。

结果: 驱动器应为适用的媒体类型正确实现 SEND OPC INFORMATION 命令。

SET CD SPEED 命令

描述: 验证驱动器是否支持报告配置文件的 SET CD SPEED 命令。

适用的媒体: 设备支持的任何媒体

测试用例步骤:

  1. 将 GET CONFIGURATION 命令发送到获取实时流式处理功能。 如果已设置 SCS (CD) ,请检查响应。 如果未设置,则驱动器不支持 SET CD SPEED 命令。 跳过测试用例。

  2. 发送 SET CD SPEED 命令,在 CDB 中具有以下值。

    • RotationalControl = 0,ReadSpeed = 0xFFFF,WriteSpeed = ( ( (4* 75 * 2352) + 500) / 1000) 如果命令打印检测键失败,且测试用例失败
  3. [可选]发送 SET CD SPEED 命令,数据方向标志设置为"到设备",随机大小缓冲区填充随机数据。 在 CDB 中设置以下值。

    • RotationalControl = 0,ReadSpeed = 0xFFFF,WriteSpeed = ( ( (4* 75 * 2352) + 500) / 1000)

结果: 驱动器应为适用的媒体类型正确实现 SET CD SPEED 命令。

READ10 命令

描述: 验证驱动器是否支持报告配置文件的 READ10 命令。

适用的媒体: 以下任何介质:

  • CD-ROM

  • DVD-ROM

测试用例步骤:

  1. 发送 READ TOC/PMA/ATIP 命令,分配长度等于 READ TOC 响应标头的大小, ( 4 个字节)

  2. 发送分配长度等于 READ TOC 响应标头的大小的 READ TOC/PMA/ATIP 命令 ( 4 个字节) + 步骤 1 中响应标头的数据长度。

  3. 检查所有格式化的 Read TOC 描述符(如果其任何控件设置为 0x04

  4. 如果未找到,则测试用例失败

  5. 否则,请从格式化的 Toc 轨迹描述符获取轨迹起始地址。

  6. 发送"读取容量"命令,并将 LBA 字段设置为零,获取"块大小"。

  7. 发送读取命令,将传输长度设置为零,并将起始 LBA 设置为步骤 5 中的 LBA。

  8. 计算要读取的块数

  9. 如果读取容量响应中的 LBA 小于步骤 5 中的 LBA,则要读取的块数设置为 0

  10. 如果读取容量响应中的 LBA 大于步骤 5 中的 LBA,则设置要读取的块数等于读取容量响应中的 LBA 与步骤 5 中的 LBA 之间的差值。 如果该值大于 50,将要读取的块数设置为 50。

  11. 将读取 10 CDB 中的起始 LBA 设置为步骤 5 中的 LBA

  12. 发送传输长度设置为 1 的 read10 命令

  13. 休眠 10 毫秒

  14. 递增读取 10 CDB 中的起始 LBA

  15. 重复步骤 12 到 14,直到读取所有块数。

  16. [可选]发送 READ10 命令,数据方向标志设置为"到设备",随机大小缓冲区填充随机数据。 在 CDB 中设置以下值。

    • TransferLength = 1, Starting LBA = Random LBA value in the LBA range of LBA number of LBA number of step 8 with starting LBA from the step 5

结果: 驱动器应为适用的媒体类型正确实现 READ10 命令。

事件通知

描述: 验证设备事件通知是否正确报告给 Windows PNP。

适用的媒体: 设备支持的任何媒体

测试用例步骤:

  1. 如果驱动器架构的 BusType STORAGE_ADAPTER_DESCRIPTOR设置为 BusTypeSata,则发送IOCTL_ATA_PASS_THROUGH标识数据包设备信息数据的请求。 在响应检查中,是否支持单词 78 (异步通知功能第 5 位) 并且启用了单词 79 (异步通知功能第 5 位) 同时设置。 否则测试失败

  2. 注册操作更改事件。

  3. 检查介质是否存在。

  4. 如果介质存在,则弹出媒体。

  5. 等待 MEDIA REMOVAL 事件。 如果在 60 秒超时内未生成事件,则测试用例失败。

  6. 将媒体注入驱动器。

  7. 等待媒体到达事件。 如果在60秒内未生成事件,则测试用例失败。

Result: 驱动器应该正确实现事件通知。

编写测试

说明: 验证 IMAPI.EXE 上下文中数据内容的驱动器写入功能。 设备使用驱动器报告的各种写入速度进行测试。 该测试还验证设备的多会话功能是否适用于插入的媒体

适用的媒体: 以下任何媒体 (取决于驱动器操作) :

  • 顺序写入:

    • CD-R

    • CD-RW

    • DVD+R

    • DVD-R

    • DVD-RAM

    • BD-R

    • BD 重

  • 限制覆盖:

    • DVD-RW
  • 数据包模式:

    • DVD+RW
  • 环境

    • CD-R

    • CD-RW

    • DVD-R

    • DVD+R

    • BD-R

测试用例步骤:

  1. 要求用户插入空媒体。

  2. 调用 API IDiscFormat2Data:: get_CurrentMediaStatus 以检查媒体是否为空。

  3. 如果媒体不为空,并且它是以下可重写媒体类型之一,则通过使用最小空白选项发送空白命令来清除该媒体。

    • CD-RW

    • DVD RW 顺序录制

    • DVD-RW 限制覆盖

    • DVD+RW

    • DVD-RAM

    • BD 重

  4. 如果介质不是可重写介质,则要求用户插入空白介质。 请重试此情况三次,否则测试用例失败。

  5. 如果介质不是可重写介质,则要求用户插入空白介质。 请重试此情况三次,否则测试用例失败。

  6. 通过调用 API IDiscFormat2Data:: get_SupportedWriteSpeedDescriptors 获取写入速度描述符的列表。

  7. 随机化报表写入速度的顺序

  8. 使用步骤6中的一种写入速度,通过调用 API IDiscFormat2Data:: SetWriteSpeed 来设置写入速度。

  9. 创建随机数据大小,其范围为介质上的10% 可用空间。 用随机数据填充缓冲区。

  10. 使用 API IDiscFormat2Data:: get_FreeSectorsOnMedia 获取光盘上的可用块数。

  11. 使用 API IDiscFormat2Data:: get_NextWritableAddress 获取下一个可写的地址。

  12. 使用 IDiscFormat2Data:: Write 写入步骤8中的数据缓冲区。

  13. 如果驱动器支持自动弹出插入机制,则将媒体弹出并插入到托盘中。

  14. 如果介质不是 CD-RW、DVD + RW、DVD-RAM,请重新登录,然后执行以下操作:

    • 使用 API IDiscFormat2Data:: get_FreeSectorsOnMedia 获取光盘上的可用块数。

    • 检查可用扇区数是否小于步骤9中的值(在步骤8中写入数据的大小)。

    • 使用 API IDiscFormat2Data:: get_NextWritableAddress 获取下一个可写的地址。

    • 根据步骤8中的写入数据大小,检查下一个可写地址是否大于第10步中的下一个可写地址。

    • 从光盘中读取数据,并比较是否与步骤11中写入媒体的数据相匹配。

  15. 获取最后一个曲目信息

  16. 如果媒体不是 DVD,则检查逻辑磁道大小是否大于或等于我们编写的数据的大小。

  17. 检查逻辑磁道号是否正确。

  18. 获取 "写入参数模式" 页。

  19. 如果 "写入参数模式" 页报告为固定数据包,则检查驱动器报告的跟踪信息是否不是数据包/增量。

  20. 读取光盘信息,并检查会话数是否匹配。

  21. 如果介质不是 CD-RW,则可以为每个写入速度重复步骤7到步骤19。 如果驱动器只返回一个写入速度,则再次重复步骤7到 19 1,以便向光盘中再添加一个会话以便验证多会话功能。

Result: 驱动器应能够在 IMAPI.EXE 的上下文中刻录数据。

音频媒体 (写入音频轨道)

说明: 验证 IMAPI.EXE 的上下文中音频内容的驱动器写入功能。

适用的媒体: 以下任何媒体:

  • CD-R

  • CD-RW

测试用例步骤:

  1. 如果媒体不为空,并且为 cd-rw 媒体类型,则通过使用最小空白选项发送空白命令来清除媒体。

  2. 如果介质不是可重写介质,则要求用户插入空白介质。 请重试此情况三次,否则测试用例失败。

  3. 通过调用 DiscFormat2TrackAtOnce,将媒体锁定为独占访问::P repareMedia。

  4. 通过调用 API IDiscFormat2TrackAtOnce:: get_SupportedWriteSpeeds 获取写入速度描述符的列表。

  5. 选择介于3和10之间的随机音频曲目数。

  6. 随机化报表写入速度的顺序。

  7. 通过调用步骤1中的 API IDiscFormat2TrackAtOnce:: SetWriteSpeed 设置写入速度。

  8. 使用 API IDiscFormat2Data:: get_FreeSectorsOnMedia 获取光盘上的可用块数。

  9. 从1分钟音频数据到10分钟音频数据创建随机大小的音频数据。 数据的大小应为2352的倍数。

  10. 将音频数据流添加到 IDiscFormat2TrackAtOnce:: AddAudioTrack。

  11. 获取最后一个曲目信息

  12. 检查逻辑轨迹大小(如果大于或等于我们编写的音频轨迹的大小)。

  13. 检查逻辑磁道号是否正确

  14. 通过调用 IDiscFormat2TrackAtOnce:: FreeSectorsOnMedia 获取介质上的可用扇区数。

  15. 检查步骤14中的可用扇区数是否小于步骤8中写入媒体的音频轨迹的大小。

  16. 对于步骤5中的音频曲目,请重复步骤5至15

  17. 获取 "写入参数模式" 页

  18. 如果 "写入参数模式" 页报告为固定数据包,则检查驱动器报告的跟踪信息是否不是数据包/增量的

  19. 对于每个写入速度,重复步骤1到18。

  20. 如果驱动器支持自动弹出插入机制,则将媒体弹出并插入到托盘中。

Result: 驱动器应能够在 IMAPI.EXE 的上下文中刻录音频媒体。

空字符

说明: 验证 IMAPI.EXE 的上下文中驱动器的格式/空白功能。

适用的媒体: 以下任何媒体:

  • CD-RW

  • DVD+RW

  • DVD-RW 限制覆盖

  • BD 重

测试用例步骤:

  1. 通过调用 API IDiscFormat2Data:: CurrentPhysicalMediaType 检查媒体是否为以下读写媒体类型之一:

    • CD-RW

    • DVD-RW

    • DVD+RW

  2. 如果该介质不是读取写入介质类型之一,则跳过该测试用例。

  3. 通过调用 API IDiscFormat2Erase:: MediaPhysicallyBlank 检查媒体是否为空白介质。

  4. 如果介质为空,请跳到步骤7。

  5. 创建25MB 随机数据流。

  6. 使用 API IDiscFormat2Data:: Write 将数据流写入光盘。

  7. 通过调用 IDiscFormat2Data:: get_CurrentMediaStatus API,检查驱动器是否将介质报告为非空白介质。

  8. 如果驱动器仍将媒体报告为空白,则测试用例失败

  9. 实现 Erase 事件处理程序 DDiscFormat2EraseEvents:: Update。

  10. 调用 API IDiscFormat2Erase::p ut_FullErase 并将 erase 选项设置为 false,以便它将执行最小空白。

  11. 使用 IDiscFormat2Erase:: EraseMedia API 发送空白命令。

  12. 调用 API IDiscFormat2Data:: get_CurrentMediaStatus 以检查媒体是否为空。

  13. 读取光盘信息,并检查

    • 报告的会话数为1。

    • 最后一个会话中的第一个磁道为1。

    • 最后一个会话中的最后一个跟踪为1。

  14. 调用 API IDiscFormat2Erase::p ut_FullErase 并将 erase 选项设置为 full 空白。 重复步骤9到14。

Result: 驱动器应能够在 IMAPI.EXE 的上下文中对媒体进行格式设置。

写入双层媒体

说明: 验证 IMAPI.EXE 的上下文中双层介质的写入功能。 设备使用驱动器报告的各种写入速度进行测试。

适用的媒体: 以下任何媒体:

  • DVD + R DL

  • DVD-R DL

测试用例步骤:

  1. 要求用户插入空媒体。

  2. 调用 API IDiscFormat2Data:: get_CurrentMediaStatus 以检查媒体是否为空

  3. 如果介质不是可重写介质,则要求用户插入空白介质。 请重试此情况三次,否则测试用例失败。

  4. 通过调用 API IDiscFormat2Data:: get_SupportedWriteSpeedDescriptors 获取写入速度描述符的列表。

  5. 随机化报表写入速度的顺序

  6. 使用步骤5中的一种写入速度,通过调用 API IDiscFormat2Data:: SetWriteSpeed 来设置写入速度。

  7. 创建随机大小的随机数据流,该数据流包含最多50% 的媒体可用空间。 用随机数据填充缓冲区

  8. 使用 IDiscFormat2Data:: Write 写入步骤7中的数据缓冲区。

  9. 如果驱动器支持自动弹出插入机制,则将媒体弹出并插入到托盘中。

  10. 从光盘中读取数据,并比较是否与步骤9中写入媒体的数据相匹配。

  11. 获取最后一条曲目信息。

  12. 检查逻辑磁道大小是否大于或等于我们编写的数据的大小。

  13. 检查逻辑磁道号是否正确

  14. 获取 "写入参数模式" 页。

  15. 如果 "写入参数模式" 页报告为固定数据包,则检查驱动器报告的跟踪信息是否不是数据包/增量。

  16. 读取光盘信息,并检查会话数是否匹配。

  17. 重复步骤8到16,其中随机数据流随机大小为介质上的可用空间的100%。

    警告

       上述最后一步是测试驱动器是否能够正确地在双层上写入数据。

     

Result: 驱动器应能够在 IMAPI.EXE 的上下文中将数据刻录到双层媒体的两个层中。

只读驱动器

说明: 在打开的 (追加) 并关闭 (定稿) 光盘上的只读驱动器的读取功能。

警告

   此测试用例需要辅助写入器驱动器来为相应的测试配置文件创建测试数据光盘。

 

适用的媒体: 以下任何媒体:

  • CD-ROM

  • DVD-ROM

  • BD

测试用例步骤:

  1. 弹出写入器驱动器托盘。

  2. 如果测试配置文件是

    • Cd-rom 要求用户在写入器驱动器中插入 CD-R/CD-RW。

    • DVD-ROM 要求用户在写入器驱动器中插入 DVD + R/DVD R/dvd + RW/dvd RAM。

    • BD 要求用户在写入器驱动器中插入 BD/BD。

  3. 注入写入器驱动器托盘。

  4. 通过调用 API IDiscFormat2Data:: get_SupportedWriteSpeedDescriptors 获取写入速度描述符的列表。

  5. 创建随机大小的随机数据流,该数据流的随机大小可达介质上的10% 的可用空间。 用随机数据填充缓冲区。

  6. 通过从步骤4中的第一个写入速度描述符值调用 API IDiscFormat2Data:: SetWriteSpeed 来设置写入速度。

  7. 使用 IDiscFormat2Data::写入到写入器驱动器中的媒体,从步骤5写入数据缓冲区。

  8. 如果支持自动弹出机制,请弹出写入器驱动器托盘。 否则要求用户按下弹出按钮

  9. 如果设备支持自动弹出机制,请弹出该托盘。否则,要求用户按弹出按钮。

  10. 请求使用从写入器驱动器中删除媒体,并将其放入测试驱动器。

  11. 如果支持自动注入 (加载托盘) 机制,则注入写入器驱动器托盘。 否则,要求用户将纸盒插入驱动器。

  12. 如果支持 "自动注入" (加载托盘) 机制,则将其插入。 否则,要求用户将纸盒插入驱动器。

  13. 从测试驱动器光盘中读取数据,并比较是否与步骤7中写入媒体的数据相匹配。

  14. 将 IDiscFormat2Data:: ForceMediaToBeClosed 设置为 true,并重复步骤1到13来验证已完成光盘上的测试驱动器。

Result: 驱动器应能够同时读取关闭和打开的媒体。

驱动器序列号

说明: 验证测试驱动器返回的驱动器序列号是否符合 MMC/Mt。 Fuji 规范标准。

警告

   此测试用例需要两个相同的驱动器来验证这两个驱动器是否返回唯一序列号。 一个主要的测试设备,另一个是辅助测试驱动器。

 

适用的媒体: 设备支持的任何介质

测试用例步骤:

  1. 将查询命令发送到主测试设备,分配长度等于05h。

  2. 如果此命令成功,则从响应标头获取更多的长度值。

  3. 将该查询命令重新发送到分配长度设置为5个字节的主要设备,超过步骤2中的额外长度。

  4. 如果此命令成功,则获取供应商标识、产品标识和产品修订级别。

  5. 为辅助驱动器重复步骤1至4,并获得供应商标识、产品标识和产品修订级别。

  6. 比较步骤4和步骤5中的供应商标识、产品标识和产品修订级别值。 如果二者不匹配,则测试用例失败。

    警告

       这是为了确保两个测试驱动器相同

     

  7. 将 GET CONFIGURATION 命令发送到主测试驱动器,获取分配长度等于逻辑单元序列号功能描述符大小的逻辑单元序列号功能。

  8. 如果功能代码与逻辑单元序列号功能代码匹配,请检查响应。 获取其他长度。

  9. 将 GET CONFIGURATION 命令发送到主测试驱动器,获取分配长度等于逻辑单元序列号功能描述符的大小以及步骤 8 中报告的所需额外长度的逻辑单元序列号功能。

  10. 在响应中检查以下内容:

    • 功能代码与逻辑单元序列号功能代码匹配。

    • 报告的序列号数据位于 ASCII 中。

    • 填充数据。

    • 填充后无数据。

  11. 对辅助测试设备重复 7 到 9,并获取驱动器序列号。

  12. 比较步骤 10 和步骤 11 中的驱动器序列号。 驱动器应返回唯一的序列号。 如果两个序列号相等,则测试用例失败。

结果: 驱动器应返回唯一的序列号,并且该编号应符合 MMC/Mt。 中国标准。

实时流式处理

描述: 验证驱动器在驱动程序上下文中的数据内容实时流式处理cdrom.sys功能。 设备使用驱动器报告的各种读取和写入速度进行测试。

适用的媒体: 设备支持的任何媒体

测试用例步骤:

  1. 要求用户插入媒体。

  2. 如果媒体不可写或不可重写,请继续执行步骤 13 的读取测试。

  3. 调用 API IDiscFormat2Data::get_CurrentMediaStatus检查媒体是否为空。

  4. 如果媒体不为空,并且它是以下可重写媒体类型之一,则通过发送包含最小空白选项的空白命令来擦除媒体。

    • CD-RW

    • DVD-RW 顺序录制

    • DVD-RW 受限覆盖

    • DVD+RW

    • DVD-RAM

    • BD-RE

  5. 如果媒体不是可重写的媒体,则要求用户插入空白介质。 请重试 3 次,否则测试用例失败。

  6. 发送 GET CONFIGURATION 命令,并请求实时流式处理功能。 如果未成功或未设置当前位,则测试失败。

  7. 如果未设置 (SW) 位或写入速度性能描述符 (WSPD) 位实时流式处理功能响应,则测试会失败。

  8. 发送 GET PERFORMANCE 命令,并请求写入速度描述符以及支持的写入速度的生成和数组。 如果命令未成功,则测试失败。

  9. 随机排列写入速度数组。

  10. 如果可用媒体大小超过其完整容量的 10%,则调用 DeviceIoControl,IOCTL_CDROM_SET_SPEED CDROM_SET_STREAMING下一次写入速度提供的结构。 写入高达 10% 完整容量的随机数据并测量 (请参阅本文档中的相应部分,以测量数据) 。

  11. 请尽可能长地重复步骤 10。 如果探测所有写入速度,则随机排列速度数组,将下一次写入速度设置为开头。

  12. 发送 CLOSE TRACK SESSION 命令以完成媒体

  13. 如果设置了写入速度性能描述符 (WSPD) 位实时流式处理功能响应,则发送 GET PERFORMANCE 命令并请求写入速度描述符并生成支持的读取速度数组,否则发送 GET PERFORMANCE 命令,请求性能数据时容错位设置为 10b (名义) ,对于读取速度,请在响应中选择最低值的"开始性能"和"结束性能"字段。 如果任一命令未成功,测试将失败。

  14. 随机排列读取速度数组。

  15. 将读取长度设置为媒体上第一个轨迹的大小。

  16. 对于每个读取速度,请调用 DeviceIoControl,IOCTL_CDROM_SET_SPEED和CDROM_SET_STREAMING下一次读取速度提供的结构。 读取媒体上记录的全部数据(以 10% 的媒体容量为 (或至少 5 MB(如果媒体的数据小于 50 MB) )并度量每个区块的速度。 如果任何区块的实际速度低于任何区块的请求速度,则表示测试失败。

结果: 驱动器应能够在实时流模式下运行。

写入速度度量

测试查询设备,并获取测试介质支持的写入速度。 然后,它将尝试验证所有报告写入速度的写入方案。 测试预期每个写入方案的计算写入速度接近设置为驱动器的写入速度。 测试允许测量的写入速度的 10% 容错。 测试将验证写入速度,如下所示。

测试将数据写入媒体并监视写入的数据量。 它不包括 10% 写入的初始数据(最后 10% 写入的数据)的时间。 它只测量中间 80% 数据的计时,并计算该数据的速度,并将 10% 的容错添加到该值。 因此,如果"x"是计算中间 80% 数据的速度,则最终计算速度为 1.1 倍。 测试预期此值大于或等于开始写入前为驱动器设置的速度。

测试不包括初始 10% 的数据写入计时,以允许驱动器准备写入。 排除最后 10% 的数据计时,以允许驱动器对写入媒体的数据进行适当的清理。

音频媒体无间隔原始录制内容

描述: 验证 IMAPI 上下文中无间隔原始音频内容的驱动器写入功能

适用的媒体: 以下任何介质:

  • CD-R

  • CD-RW

测试用例步骤:

  1. 检查已插入介质的驱动器是否支持无间隙原始记录。 如果不支持,测试将失败。

  2. 检查硬盘驱动器支持的扇区类型。

  3. 对于硬盘驱动器支持的每个扇区类型,请完成步骤 4 到 9

  4. 创建原始映像。

  5. 设置正确的扇区类型,并创建原始图像的结果流。

  6. 确定原始图像是否无间隙。

  7. 随机选择写入速度,并设置为"加速"。 将请求的扇区类型设置为已针对原始映像设置的扇区类型。 将原始图像的流写入媒体并观察进度。 计算处理速度并打印吞吐量。

  8. 通过检查每个逻辑跟踪信息来确定写入是否成功。 检查轨迹是否为音频轨迹、轨迹大小是否正确,以及最后一个逻辑轨迹号的大小加上其起始地址是否等于从磁盘中退出的潜在客户的起始地址。如果任何条件返回 false,测试将失败。 否则,它将通过。

  9. 对媒体执行原始读取。 对于每个轨迹,请检查轨迹是否为音频。 如果不是,则测试失败,因为录制内容已确保轨迹是音频轨迹。 计算轨迹的起始偏移量和结束偏移量。从开始偏移量开始,到轨迹的结束偏移量结束,对轨迹执行读取。如果在读取过程中发生错误,则测试失败;

结果: 驱动器应该能够在 IMAPI 上下文中消耗无间隙的原始音频图像。

命令用法