光学徽标测试-BD-R

命令 说明

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.etl

示例:/cmdPerfTraceLogFile perf-tracelog.etl

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要求。

测试详细信息

   
规范
  • 装置。存储。Optical.BluRayWriter.Profiles
平台
  • 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
预期运行时间 (分钟) 360
类别 方案
超时 (分钟) 21600
需要重启 false
需要特殊配置 false
Type automatic

 

其他文档

此功能区域中的测试可能包含其他文档,包括先决条件、设置和故障排除信息,可在以下主题中 () :

运行测试

在运行测试之前,请根据测试要求:光学磁盘驱动器测试先决条件中所述 完成测试设置

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

注意

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

 

故障排除

有关 HLK 测试失败的常规故障排除,请参阅HLK Windows故障排除

有关故障排除信息,请参阅Device.存储测试

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

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

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

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

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

详细信息

驱动器应支持以下命令:

  • 获取配置 (无介质)

  • 获取事件状态通知

  • 查询

  • 机制状态

  • 模式感知

  • 防止允许中等大小删除

  • 请求感知

  • 启动停止单元

  • 测试单元就绪

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

  • 使用媒体 (获取配置)

  • 获取性能

  • 读取缓冲区容量

  • 读取容量

  • 读取磁盘信息

  • 读取格式容量

  • 读取 Toc Pma Atip

  • 发送 Opc 信息

  • 设置 CD 速度

  • Read10

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

  • 事件状态通知

  • 写入

    • 顺序模式

    • 数据包模式

    • 受限覆盖

    • 多会话支持

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

  • 空白

  • 唯一驱动器序列号

  • 实时流式处理

  • 音频媒体无间隙原始录制

测试用例分为以下三组:

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

    • 获取配置 (无媒体)

    • 获取事件状态通知

    • 查询

    • 机制状态

    • 模式感知

    • 防止允许介质删除

    • 请求感知

    • 启动停止单元

    • 测试单元就绪

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

    • GET CONFIGURATION

    • 获取性能

    • 读取容量

    • 读取缓冲区容量

    • 读取磁盘信息

    • 读取格式容量

    • READ TOC PMA ATIP

    • 发送 OPC 信息

    • SET CD SPEED

    • READ10

  • 使用方案测试用例。 以下方案使用 IMAPI 消耗引擎接口进行测试:

    • 事件状态通知

    • 空白

    • WRITE/MULTISESSION

    • 音频媒体

    • 写入双层媒体

    • 驱动器序列号

    • 只读驱动器

    • 实时流式处理

    • 音频媒体无间隔原始录制

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

  • 在无媒体 (时获取配置)

  • 获取事件状态通知命令

  • 查询命令

  • "机制状态"命令

  • MODE SENSE 命令

  • "阻止允许介质删除"命令

  • REQUEST 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. 等待 MEDIA ARRIVAL 事件。 如果在 60 秒超时内未生成事件,则测试用例失败。

结果: 驱动器应正确实现事件通知。

编写测试

描述: 验证 IMAPI 上下文中数据内容的驱动器写入功能。 设备以驱动器报告的各种写入速度进行测试。 测试还验证设备的多访问功能是否适用于插入的媒体

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

  • 顺序写入:

    • CD-R

    • CD-RW

    • DVD+R

    • DVD-R

    • DVD-RAM

    • BD-R

    • BD-RE

  • 受限覆盖:

    • 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-RE

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

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

  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. 如果媒体不是 DVD-RW、DVD+RW、DVD-RAM、BD-RE,则:

    • 使用 API IDiscFormat2Data::get_FreeSectorsOnMedia 获取磁盘中的可用块数。

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

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

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

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

  15. 获取最后一个跟踪信息

  16. 如果媒体不是 DVD-RW,请检查逻辑轨迹大小是否大于或等于我们撰写的数据的大小。

  17. 检查逻辑跟踪号是否正确。

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

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

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

  21. 如果媒体不是 DVD-RW、DVD+RW 和 DVD-RAM,则针对每个写入速度重复步骤 7 到 19。 如果驱动器只返回一个写入速度,则再次重复步骤 7 到 19,向磁盘再添加一个会话以验证多会话功能。

结果: 驱动器应能够处理 IMAPI 上下文中的数据。

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

描述: 验证 IMAPI 上下文中音频内容的驱动器写入功能。

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

  • CD-R

  • CD-RW

测试用例步骤:

  1. 如果介质不为空且为 CD-RW 介质类型,则通过发送包含最小空白选项的空白命令来擦除媒体。

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

  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. 如果驱动器支持自动弹出注入机制,则弹出媒体,然后将媒体注入托盘。

结果: 驱动器应能够在 IMAPI 上下文中消耗音频媒体。

空白

描述: 验证 IMAPI 上下文中驱动器的格式/空白功能。

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

  • CD-RW

  • DVD+RW

  • DVD-RW 受限覆盖

  • BD-RE

测试用例步骤:

  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中的驱动器序列号。 驱动器应返回唯一序列号。 如果两个序列号相等,则测试用例失败。

Result: 驱动器应返回唯一序列号,并且该数字应符合 MMC/Mt。 Fuji 标准。

实时流式处理

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

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

测试用例步骤:

  1. 要求用户插入介质。

  2. 如果在步骤13中无法写入或重写媒体,请继续阅读测试。

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

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

    • CD-RW

    • DVD RW 顺序录制

    • DVD-RW 限制覆盖

    • DVD+RW

    • DVD-RAM

    • BD 重

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

  6. 发送获取配置命令并请求提供实时流式处理功能。 如果未成功,或未将当前位设置为 "失败",则测试失败。

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

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

  9. 无序播放写入速度数组。

  10. 如果可用媒体大小超过了其全部容量调用 DeviceIoControl 的10%,则会为下一个写入速度提供 IOCTL_CDROM_SET_SPEED 和 CDROM_SET_STREAMING 结构。 将随机数据写入最大为10% 的完整容量,并测量速度 (参阅本文档中的相应部分,了解) 的过程说明。

  11. 尽可能长时间重复步骤10。 如果探测的所有写入速度都是无序播放速度数组,并将下一次写入速度设置为开始。

  12. 发送 CLOSE 跟踪会话命令来完成媒体

  13. 如果已设置写入速度性能描述符 (WSPD) 位的实时流式处理功能响应,则发送 "获取性能" 命令并请求写入速度描述符,然后生成一个支持的读取速度的数组; 否则,通过将容差位设置) (为 "不受支持" 的性能数据请求发送 "获取性能" 命令。 如果未成功的任一命令失败,则测试失败。

  14. 无序播放读取速度数组。

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

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

Result: 驱动器应能够以实时流式处理模式操作。

写入速度度量

该测试将查询设备,并为测试媒体获取支持的写入速度。 然后,它会尝试针对所有报告的写入速度来验证写入方案。 测试要求每个写入方案的计算写入速度接近于写入到驱动器的写入速度。 测试允许测量写入速度10% 的容差。 测试将验证写入速度,如下所示。

测试将数据写入媒体,并监视写入的数据量。 它不包括最终写入10% 写入数据的时间。 它仅测量中间80% 数据的计时,并计算该数据的速度,并为该值增加10% 的容差。 因此,如果 "x" 的计算结果为中间80% 数据的速度,则最终计算出的速度为 1.1 x。 测试预期此值大于或等于在开始写入之前设置到驱动器的速度。

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

音频媒体无缝原始录制

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

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

  • CD-R

  • CD-RW

测试用例步骤:

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

  2. 检查测试驱动器支持的扇区类型。

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

  4. 创建原始映像。

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

  6. 确定原始映像是否为无缝。

  7. 随机选择写入速度,并将其设置为刻录速度。 将所请求的扇区类型设置为已为原始映像设置的类型。 将原始映像的流写入媒体并观看进度。 计算刻录速度并打印吞吐量。

  8. 通过检查每个逻辑轨迹信息来确定写入是否成功。 如果轨道的大小正确,则检查轨道是否为音频轨道; 如果最后一个逻辑磁道号的大小加上其起始地址,则为;如果任何条件返回 false,则测试将失败。 否则,它将通过。

  9. 对媒体执行原始读取。 对于每个轨迹,检查轨迹是否为音频。 如果不是,则测试失败,因为记录已经确保曲目是音频轨迹。 计算轨道的开始偏移量和结束偏移量。从起始偏移量开始读取磁道,并以轨迹的结束偏移量结束。如果在读取过程中出现错误,则测试失败;

Result: 驱动器应能够在 IMAPI.EXE 的上下文中刻录无缝原始音频映像。

命令用法