共用方式為


光學標誌測試 - DVD-RW RO

這項測試會驗證光學裝置是否符合標準,並符合 Windows 光驅需求。

測試詳細資料

   
規格
  • 裝置。儲存體。Optical.CdRawRecording
  • 裝置。儲存體。Optical.CommandPerformance
  • 裝置。儲存體。Optical.DriveDefinition
  • 裝置。儲存體。Optical.Features
  • 裝置。儲存體。Optical.Profiles
  • 裝置。儲存體。Optical.RealTimeStreaming
  • 裝置。儲存體。Optical.mmcVersion
  • 裝置。儲存體。Optical.Sata.AsynchronousNotification
平台
  • 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 的下一個更新
預期的執行時間(以分鐘為單位) 120
類別 案例
逾時 (以分鐘為單位) 7200
需要重新啟動 false
需要特殊設定 false
類型 automatic

 

其他檔

此功能區域中的測試可能會有其他檔,包括必要條件、設定和疑難解答資訊,可在下列主題中找到:

執行測試

執行測試之前,請完成測試設定,如測試需求: 光磁碟驅動器測試必要條件中所述。

測試會顯示組態對話框,以取得主要和次要磁碟驅動器匣組態。 用戶必須從 [寫入器磁碟驅動器] 對話框中的磁碟驅動器清單中選取相同的次要磁碟驅動器,而且應該選取磁碟驅動器匣功能,是否支持自動退出和自動載入匣。

注意

   在測試計算機上執行的 I/O 密集應用程式可能會干擾光學標誌測試效能測量案例。 當測試執行時,請確定測試計算機上沒有其他執行的應用程式。

 

疑難排解

如需 HLK 測試失敗的一般疑難解答,請參閱 針對 Windows HLK 測試失敗進行疑難解答。

如需疑難解答資訊,請參閱疑難解答 Device.儲存體測試

以下是有關此測試的已知問題:

  • 預設會停用總線重設測試案例。

    根據預設,測試不會在總線重設時驗證適當的裝置行為。

    如果發生總線重設,則磁碟驅動器應該會正確重設本身、重新上線,且應該正常運作。 某些有缺陷的磁碟驅動器無法正確重設,而且在公共汽車重設之後將無法運作。 這不是適當的實作。 啟用此特定測試案例時,命令驗證測試案例(裝置和配置檔測試案例)會傳送具有不正確 SRB 資料方向旗標的命令。 這通常會停止總線,最後會導致埠驅動程式在指定的逾時期間後重設總線。

    大部分的記憶體控制器都不支援此測試案例。 未正確實作的記憶體控制器在總線重設之後將無法復原。 如果發生這種情況,測試案例可能會因為儲存設備控制器而失敗,即使裝置已正確實作也一樣。 此測試無法區分裝置失敗與記憶體控制器失敗。 因此,預設會停用測試此特定案例。 若要啟用此特定案例的測試,應該使用 “RunDataDirectionFlagScenario” 命令行選項來執行測試可執行檔。

詳細資訊

磁碟驅動器應支援下列命令:

  • 取得設定 (沒有媒體)

  • 取得事件狀態通知

  • 查詢

  • 機制狀態

  • 模式感知

  • 防止允許媒體移除

  • 要求感知

  • 啟動停止單位

  • 測試單元就緒

如果磁碟驅動器是支援的功能和配置檔的必要命令,則磁碟驅動器應支援下列命令。

  • 取得設定 (含媒體)

  • 取得效能

  • 讀取緩衝區容量

  • 讀取容量

  • 讀取光碟資訊

  • 讀取格式容量

  • 閱讀 Toc Pma Atip

  • 傳送 Opc 資訊

  • 設定CD速度

  • Read10

如果與這些案例相關聯的命令是其支援的功能和配置檔,則磁碟驅動器應支援下列案例。

  • 事件狀態通知

  • 寫入

    • 循序模式

    • 封包模式

    • 受限制的覆寫

    • 多會話支援

  • 音訊媒體(寫入曲目)

  • Blank

  • 唯一磁碟驅動器序號

  • 即時串流

  • 音訊媒體空白原始錄製

測試案例分成下列三個群組:

  • 裝置測試案例。 下列命令會驗證適用於裝置的測試案例:

    • GET CONFIGURATION (不含媒體)

    • 取得事件狀態通知

    • 查詢

    • 機制狀態

    • MODE SENSE

    • 防止允許媒體移除

    • 要求感知

    • 啟動停止單位

    • 測試單元就緒

  • 分析測試案例。 下列命令驗證測試案例將會在所有適用的設定檔上進行測試:

    • GET CONFIGURATION

    • 取得效能

    • 讀取容量

    • 讀取緩衝區容量

    • 讀取光碟資訊

    • 讀取格式容量

    • 讀取 TOC PMA ATIP

    • 傳送 OPC 資訊

    • 設定CD速度

    • READ10

  • 使用案例測試案例。 下列案例是使用 IMAPI 燃燒引擎介面進行測試:

    • 事件狀態通知

    • BLANK

    • WRITE/MULTISESSION

    • 音訊媒體

    • 寫入雙層媒體

    • 磁碟驅動器序號

    • 唯讀磁碟驅動器

    • 即時串流

    • 音訊媒體空白原始錄製

此測試包含下列測試案例:

  • GET CONFIGURATION COMMAND (不含媒體)

  • GET 事件狀態通知命令

  • 查詢命令

  • 機制狀態命令

  • MODE SENSE 命令

  • 防止允許媒體移除命令

  • 要求感知命令

  • 啟動停止單位命令,退出和載入效能

  • 測試單元就緒命令

  • GET CONFIGURATION 命令

  • 取得效能

  • 讀取容量命令

  • 讀取緩衝區容量命令

  • 讀取光碟資訊命令

  • 讀取格式容量命令

  • 讀取 TOC/PMA/ATIP 命令

  • 傳送 OPC 資訊命令

  • 設定 CD SPEED 命令

  • READ10 命令

  • EVENT NOTIFICATION

  • 寫入測試

  • 音訊媒體(寫入音軌)

  • BLANK

  • 寫入雙層媒體

  • 唯讀磁碟驅動器

  • 磁碟驅動器序號

  • 即時串流

  • 寫入速度測量

  • 音訊媒體空白原始錄製

GET CONFIGURATION 命令 (沒有媒體)

描述: 此測試是確保磁碟驅動器在匣中沒有媒體時,正確回應 GET CONFIGURATION 命令。

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 傳送 START STOP UNIT 命令來退出匣。

  2. 等到匣開啟為止。

  3. 傳送 GET CONFIGURATION 命令,其響應數據長度為 4 個字節,以取得功能標頭數據長度。 如果命令失敗,請列印感知鍵並失敗測試案例。 目的:允許軟體探查命令的支援。

  4. 檢查磁碟驅動器在功能標頭中是否沒有回報目前的配置檔。 如果磁碟驅動器未將目前的配置檔重新建立為「沒有目前的配置檔」,則測試案例會失敗。

  5. 使用 RT=00b 和步驟 3 中裝置傳回的正確數據長度,再次傳送 GET CONFIGURATION 命令。 目的:允許軟體擷取磁碟驅動器所支援的完整功能清單。

  6. 檢查磁碟驅動器在功能標頭中是否沒有回報目前的配置檔。 如果磁碟驅動器未將目前的配置檔重新建立為「沒有目前的配置檔」,則測試案例會失敗。

  7. 取得目前配置檔位集回應中的配置檔清單功能描述元,如果任何配置檔描述項的配置檔描述項設定為 1,則測試案例會失敗。

  8. 傳送 GET CONFIGURATION 命令,其響應數據長度為 20 個字節,RT=01b,啟動功能號碼=0010h (隨機可讀取的功能)。 如果命令失敗,或未傳回隨機可讀取功能描述元,請適當地列印感知鍵,並讓測試案例失敗。 目的:允許軟體探查特定功能貨幣(非目前貨幣)。

  9. [選擇性]傳送 GET CONFIGURATION 命令,並將數據方向旗標設定為 「到裝置」,且響應數據長度為 4 個字節,以取得功能標頭數據長度。 如果命令失敗,請列印感知鍵並失敗測試案例。 目的:確定裝置會以不正確的數據方向處理命令。

  10. 插入匣。

  11. 等候裝置進入就緒狀態

  12. 傳送 GET CONFIGURATION 命令,回應數據長度為 16 個字節,RT=01b,啟動功能號碼=0003h (抽取式中型功能)。 如果命令失敗,請適當地列印感知鍵,並讓測試案例失敗。 如果命令成功:

    • 檢查磁碟驅動器是否支援自動退出機制,是否已設定「退出」位。

    • 檢查磁碟驅動器是否支援自動插入機制,是否已設定 「Load」 位。

結果: 磁碟驅動器應正確回應 GET CONFIGURATION 命令

GET EVENT STATUS NOTIFICATION 命令

描述: 驗證磁碟驅動器是否支援 GET EVENT STATUS NOTIFICATION 命令

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 使用CDB中的下列值傳送取得事件狀態通知命令。

    • 通知類別要求 = 0x7E(操作變更、電源管理、外部要求、媒體、多主機、裝置忙碌)

    • 輪詢 = 1

    • 設定長度等於回應標頭的大小(4 個字節)

  2. 如果命令失敗,則測試案例失敗

  3. 在回應中,檢查支援哪些事件

  4. [選擇性]傳送 Get 事件狀態通知命令,並將資料方向旗標設定為 「到裝置」,並在 CDB 中設定下列值。

    • 通知類別要求 = 0x7E(操作變更、電源管理、外部要求、媒體、多主機、裝置忙碌)

    • 輪詢 = 1

    • 設定長度等於回應標頭的大小(4 個字節)

  5. 如果命令失敗,則測試案例失敗

  6. 在回應檢查事件數據長度為0x6時,會清除NEA位、通知類別為非零,且支援的事件類別與步驟 3 相同。 否則,測試案例會失敗。

  7. 使用CDB中的下列值傳送取得事件狀態通知命令。

    • 通知類別要求 = 0x7E(操作變更、電源管理、外部要求、媒體、多主機、裝置忙碌)。

    • 輪詢 = 1

    • 設定長度等於回應標頭的大小(4 個字節)

  8. 如果命令失敗,則測試案例失敗。

結果: 磁碟驅動器應該會正確回應 GET EVENT STATUS NOTIFICATION 命令。

INQUIRY 命令

描述: 驗證磁碟驅動器是否支援 INQUIRY 命令。

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 傳送配置長度等於 08h 的 INQUIRY 命令。 目的:允許軟體探查所需的回應緩衝區大小。

  2. 如果命令成功,請檢查標頭中額外長度的回應。 額外的長度必須是 32d 或更大的 [MMC5r04 6.9.2]。

  3. 再次傳送 INQUIRY 命令,配置長度設定為 5 個字節,超過步驟 2 的額外長度。

  4. 如果命令成功,請確定回應數據欄位符合 MMC5r04 資料表 320 中指定的值。

  5. 檢查廠商識別、產品識別和產品修訂等級不是 Null。

    • 目的:軟體的基本識別。
  6. 檢查下列值是否符合:

    • 裝置類型 = 5

    • 裝置類型限定元 = 0

    • 卸載式媒體 = 1

    • 回應資料格式 = 2

    • 階層支援 = 0

    • 一般 ACA = 0

    • Protect = 0

    • 第三方複製 = 0

    • 目標埠群組支援 = 0

    • 存取控制 協調器 = 0

    • 支援 SCC = 0

    • Addr16 = 0

    • 中型變更器 = 0

    • 多重埠 = 0

    • VS1 = 0

    • 機箱服務 = 0

    • BQue = 0

    • VS2 = 0

    • 命令佇列 = 0

    • 連結命令 = 0

    • 同步 = 0

    • Wide16 = 0

  7. 使用 CDB 中的下列值傳送 INQUIRY 命令:

    • EVPD = 0

    • 配置長度 = 240

  8. 使用 CDB 中的下列值傳送 INQUIRY 命令:

    • EVPD = 1

    • 配置長度 = 240

  9. 如果命令成功,則比較步驟 7 和步驟 8 的回應,如果兩者都相等,則測試案例會失敗。

  10. 傳送 INQUIRY 命令,以隨機配置長度介於 10 到 25 之間的隨機次數。 如果命令失敗,則測試案例失敗。

  11. [選擇性]傳送 INQUIRY 命令,並將資料方向旗標設定為“至裝置”,並在 CDB 中使用下列值

    • EVPD = 0

    • 配置長度 = 240

結果: 磁碟驅動器應該正確回應 INQUIRY 命令。

MECHANISM STATUS 命令

描述: 驗證磁碟驅動器是否支援 MECHANISM STATUS 命令

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 傳送配置長度為 0 個字節的 MECHANISM STATUS 命令(未指定數據感知)。 如果命令失敗,請列印感知鍵並失敗測試案例。

    • 目的:允許軟體探查命令的支援
  2. 退出匣。

  3. 等待裝置傳回感知資料 (Sense Key : 0x2, ASC: 0x3A, ASCQ: 0x02)

  4. 傳送配置長度為8個字節的M STATUS命令。

  5. 檢查 Door Open 位是否為 1b。

    • 目的:允許軟體偵測門是否開啟或關閉(開啟)。
  6. 插入匣

  7. 等候裝置準備就緒

  8. 傳送配置長度為8個字節的M STATUS命令。

  9. 檢查 Door Open 位是否為 0b。

    • 目的:允許軟體偵測門是否開啟或關閉(關閉)。
  10. 建立8位元組緩衝區,並填入隨機數據。

  11. [選擇性]將 [機制狀態] 命令,並將數據方向旗標設定為 “to the device”,且配置長度為 8 個字節。 將步驟 11 中的緩衝區傳遞至裝置。

結果: 磁碟驅動器應正確回應 MECHANISM STATUS 命令

MODE SENSE 命令

描述: 驗證磁碟驅動器是否支援Mode Sense 命令。

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 使用 CDB 中的下列值傳送 MODE SENSE 命令,以取得所有支援的模式頁面:

    • 頁面控件 = 0

    • 停用區塊描述元 = 1

    • 頁面代碼 = 0x3F

    • 配置長度 = 0x8000

  2. 檢查回應中的下列值:

    • 模式參數標頭中的區塊描述元長度為零

    • 每個模式頁面數據的頁面長度都等於 MMC5 中記載的值。

  3. 驗證每個報告頁面的模式頁面數據

  4. 針對每個報告頁面傳送Mode Sense 命令,其中包含CDB中的下列值:

    • 頁面控件 = 0

    • 停用區塊描述元 = 1

    • 配置長度 = 步驟 2 中磁碟驅動器所報告的頁面長度

  5. 檢查回應中的下列值:

    • 模式參數標頭中的區塊描述元長度為零。

    • 模式頁首中的頁碼會與要求的頁面代碼相符。

    • 模式頁首中的頁面長度等於 MMC5 中的值檔。

  6. 使用配置長度傳送Mode Sense命令0xFFF0

  7. 檢查回應中的下列值:

    • 模式參數標頭中的區塊描述元長度為零

    • 模式頁首中的頁面代碼會與要求的頁面代碼相符

  8. 使用配置長度傳送Mode Sense命令0x0A

  9. 檢查回應是否符合回應大小 (0x0A) 的位元組位元組,且回應的配置長度是否等於 0xFFF0。

  10. 在 10 到 25 之間傳送 Mode Sense 命令,並在 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 命令,並將防止位設定為 1,並將 Persistent 位設定為 0。 這會鎖定磁碟驅動器。 如果命令無法列印感知鍵,且測試案例失敗。

  2. 傳送 start stop unit 命令,並將 LocEj 位設定為 1,並將 [即時運算位] 設定為 0,並將 [開始位] 設定為零。 這會嘗試退出光碟。如果磁碟驅動器未拒絕具有感知數據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 命令。

REQUEST SENSE 命令

描述: 驗證磁碟驅動器是否支援 REQUEST SENSE 命令。

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 傳送 REQUEST SENSE 命令,並將描述元位設定為零,且配置長度設定為 252。 磁碟驅動器應回應固定格式感知數據。

  2. 如果命令無法列印感知鍵,且測試案例失敗。

  3. 如果回應碼是0x70或0x71測試通過,否則測試會失敗。

  4. [選擇性]傳送 REQUEST SENSE 命令,並將數據方向旗標設定為 “to the device”,並將描述項位設定為零,且配置長度設定為 252。 磁碟驅動器應回應固定格式感知數據。

結果: 磁碟驅動器應該會正確回應 REQUEST SENSE 命令。

START STOP UNIT 命令,退出和載入效能

描述: 驗證磁碟驅動器是否支援 START STOP UNIT 命令。

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 使用CDB中的下列值傳送 START STOP UNIT 命令

    • 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中的下列值傳送 START STOP UNIT 命令,以退出匣

    • Immediate = 1,LoadEject = 1,Start = 0,PowerConditions = 0
  4. 等候裝置開啟門 - 傳送 TEST UNIT READY 命令,如果命令成功,請等候 5 秒,然後再重試,直到失敗為止(02/3A/02)。 10 秒後逾時。

  5. 如果磁碟驅動器支援載入匣 (自動插入),請傳送 START STOP UNIT 命令,並在 CDB 中加上下列值來插入匣:

    • Immediate = 1,LoadEject = 1,Start = 1,PowerConditions = 0
  6. 如果磁碟驅動器不支援載入匣,請要求使用者將匣插入磁碟驅動器。

  7. 等候裝置準備就緒 - 傳送 TEST UNIT READY 命令,如果命令失敗且具有感知密鑰,則請等候 1 秒,然後再重試,直到成功為止。 30 秒後逾時。 PREMIUM 標誌:逾時:20 秒。

  8. 使用 CDB 中的下列值傳送 START STOP UNIT 命令,以退出匣:

    • Immediate = 0,LoadEject = 1,Start = 0,PowerConditions = 0
  9. 等候裝置開啟門 - 傳送 TEST UNIT READY 命令,如果命令成功,請等候 1 秒,然後重試,直到失敗為止(02/3A/02)。 30 秒後逾時。

  10. 要求使用者移除媒體

  11. 如果磁碟驅動器支援載入匣 (自動插入),請傳送 START STOP UNIT 命令,並在 CDB 中加上下列值來插入匣:

    • Immediate = 0,LoadEject = 1,Start = 1,PowerConditions = 0
  12. 確定命令失敗,但未就緒/中不存在/匣已關閉 (02/3A/01)

  13. 如果磁碟驅動器支援退出匣,請傳送 CDB 中具有下列值的 START STOP UNIT 命令,以退出匣:

    • Immediate = 0,LoadEject = 1,Start = 0,PowerConditions = 0
  14. 要求使用者將媒體放在匣中。

  15. 如果磁碟驅動器不支援載入匣,請要求使用者將匣插入磁碟驅動器,並等到裝置就緒為止。 如果磁碟驅動器支援載入匣(自動插入),請傳送 START STOP UNIT 命令,並在CDB中使用下列值來插入匣,並等到裝置就緒為止。

    • Immediate = 0,LoadEject = 1,Start = 1,PowerConditions = 0
  16. [選擇性]傳送 START STOP UNIT 命令,並將數據方向旗標設定為 “to the device”。 使用隨機數據以及CDB中的下列值傳送隨機大小緩衝區。

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

結果: 磁碟驅動器應該會正確回應 START STOP UNIT 命令。

TEST UNIT READY 命令

描述: 驗證磁碟驅動器是否支援 TEST UNIT READY 命令。

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 傳送 TEST UNIT READY 命令。

  2. 如果命令無法列印感知鍵並失敗測試案例

  3. [選擇性]傳送 TEST UNIT READY 命令,並將數據方向旗標設定為 「to the device」,並使用隨機數據填入隨機大小的緩衝區。

結果: 磁碟驅動器應該會正確回應 TEST UNIT READY 命令。

GET CONFIGURATION 命令

描述: 驗證磁碟驅動器是否支援報告配置檔的 GET CONFIGURATION 命令。

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 傳送 GET CONFIGURATION 命令,其響應數據長度為 0 個字節(未指定資料感知)。 如果命令失敗,請列印感知鍵並失敗測試案例。

    • 目的:允許軟體探查命令的支援。
  2. 傳送 GET CONFIGURATION 命令,其響應數據長度為 4 個字節,以取得功能標頭數據長度。 如果命令失敗,請列印感知鍵並失敗測試案例。

    • 目的:允許軟體探查命令的支援。
  3. 傳送 GET CONFIGURATION 命令,其響應數據長度為 8 個字節(以取得標頭)、RT=00b、起始功能號碼=0000h。 如果命令失敗,或目前的配置檔等於 00h,請適當地列印感知鍵,並讓測試案例失敗。

    • 目的:

      • 允許軟體探查所需的回應緩衝區大小。

      • 允許軟體探查目前的配置檔(配置檔是目前的配置檔)。

  4. 如果命令成功,請在回應中檢查下列內容

    • 標頭中的數據長度為非零,且四個字節對齊

    • 目前的配置檔編號符合磁碟驅動器中載入的媒體類型

  5. 傳送 GET CONFIGURATION 命令,其響應數據長度讀取於步驟 3,RT=00b,開始功能號碼=0000h。 閱讀目前的設定檔,然後在支援的配置檔清單中尋找此配置檔程序代碼。 確定目前的配置檔符合插入媒體的配置檔類型。 如果命令失敗,或目前配置檔未在支援的配置檔清單中回報目前,請適當地列印感知鍵,並讓測試案例失敗。

    • 目的:確保磁碟驅動器所報告資訊的一致性。
  6. 使用 RT=00b 再次傳送 GET CONFIGURATION 命令,並在長度符合 2 個字節時,步驟 3 中裝置傳回的正確數據長度。 如果長度超過 2 個字節,請傳送數據長度上限為 2 個字節的命令。

    • 目的:允許軟體擷取磁碟驅動器所支援的完整功能清單。
  7. 如果長度超過 2 個字節,請讀取傳回最後一個完整功能描述元的功能編號,並使用 RT=10b 發出額外的 GET CONFIGURATION 命令,並將起始功能編號等於此功能號碼加上 1。 重複作業,直到功能標頭中傳回的數據長度等於或小於配置的長度為止。 串連步驟 10 中用於驗證的結果功能描述項。

  8. 對於步驟 3-6 成功的所有命令,請檢查響應標頭中的數據長度是否為 4 的倍數(對齊 4 個字節)。 如果不是對齊 4 個字節,則失敗。 目的:軟體會假設 4 個字節對齊方式。

  9. 此外,如果命令成功,請檢查每個報告的功能 Version 和 Additional Length 字段是否相等或大於 MMC-5 檔中指定功能的個別值。 例如:核心功能的版本必須是 0010b 或更新版本,且其額外長度必須為 8 或更大。 目的:確保磁碟驅動器所報告資訊的一致性。 如果報告抽取式媒體功能,其版本號碼應如 GET CONFIGURATION 命令中所指定 1。

  10. 此外,如果命令成功,請檢查報告支援配置檔的每個必要功能是否已回報。

    • 目的:確保磁碟驅動器所報告之中繼資訊的一致性。
  11. 傳送 GET CONFIGURATION 命令,其響應數據長度為 20 個字節,RT=01b,啟動功能號碼=0010h (隨機可讀取的功能)。 如果命令失敗,或未傳回隨機可讀取功能描述元,請適當地列印感知鍵,並讓測試案例失敗。 目的:允許軟體探查特定功能貨幣(目前)。

  12. [選擇性]傳送 GET CONFIGURATION 命令,並將資料方向旗標設定為 「到裝置」,並以隨機數據填入隨機大小的緩衝區。 CDB 中會設定下列值:

    • 配置長度 = 緩衝區的大小,起始功能號碼=0000h,RT=00b

結果: 磁碟驅動器應該針對適用的媒體類型正確實作 GET CONFIGURATION 命令。

GET PERFORMANCE 命令

描述: 驗證磁碟驅動器是否支援報告配置檔的 GET PERFORMANCE 命令。

適用的媒體: 下列任何媒體:

  • CD-R

  • CD-ROM

  • CD-RW

  • DVD+R

  • DVD+R 雙層

  • DVD+RW

  • DVD-RW 限制覆寫

  • DVD-RAM

  • DVD-R

  • DVD-R 雙層 Seq

  • DVD-ROM

  • BD-R

  • BD-RE

  • BD-ROM

測試案例步驟:

  1. 將 GET CONFIGURATION 命令傳送至取得即時串流功能。 如果已設定寫入速度效能描述元位,請檢查回應。 如果未設定,則磁碟驅動器不支援寫入速度描述元。 略過驗證寫入速度描述元的步驟 6 到 11。

  2. 使用CDB中的下列值傳送 GET PERFORMANCE 命令,以取得零名義讀取效能描述元

    • 類型 = 0

    • 開始 LBA = 1

    • 最大描述元 = 0

    • 數據類型 = 0x10

  3. 如果命令無法列印感知鍵並失敗測試案例

  4. 使用CDB中的下列值傳送 GET PERFORMANCE 命令,以取得一個名義讀取效能描述元

    • 類型 = 0

    • 開始 LBA = 1

    • 最大描述元 = 1

    • 數據類型 = 0x10

  5. 如果命令無法列印感知鍵並失敗測試案例

  6. 使用CDB中的下列值傳送 GET PERFORMANCE 命令,以取得一個名義寫入效能描述元。

    • 類型 = 0

    • 開始 LBA = 1

    • 最大描述元 = 1

    • 資料類型 = 0x14

  7. 如果命令無法列印感知鍵並失敗測試案例

  8. 使用CDB中的下列值傳送 GET PERFORMANCE 命令,以取得寫入速度描述項清單的數據長度

    • 類型 = 3

    • 開始 LBA = 1

    • 最大描述元 = 0

    • 資料類型 = 0x14

  9. 如果命令無法列印感知鍵,且測試案例失敗。

  10. 使用CDB中的下列值傳送 GET PERFORMANCE 命令,以取得寫入速度描述項的清單

    • 類型 = 3

    • 開始 LBA = 1

    • 最大描述項 = 10

    • 資料類型 = 0x14

  11. 如果命令無法列印感知鍵,且測試案例失敗。

  12. [選擇性]傳送 GET PERFORMANCE 命令,並將數據方向旗標設定為 「到裝置」,並以隨機數據填滿隨機大小的緩衝區。 使用CDB中的下列值進行設定,以取得零名義讀取效能描述元。

    • 類型 = 0

    • 開始 LBA = 1

    • 最大描述元 = 0

    • 數據類型 = 0x10

  13. 如果命令無法列印感知鍵,且測試案例失敗。

結果: 磁碟驅動器應該針對適用的媒體類型正確實作 GET PERFORMANCE 命令。

READ CAPACITY 命令

描述: 驗證磁碟驅動器是否支援報告配置檔的 READ CAPACITY 命令。

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 傳送 READ CAPACITY 命令。

  2. 如果命令無法列印感知鍵,且測試案例失敗。

  3. 如果以位元組為單位的區塊長度不是 2048,則測試案例會失敗。

  4. [選擇性]傳送 READ CAPACITY 命令,並將數據方向旗標設定為 「到裝置」,並以隨機大小緩衝區填入隨機數據。

  5. 如果命令無法列印感知鍵,且測試案例失敗。

結果: 磁碟驅動器應該針對適用的媒體類型正確實作 READ CAPACITY 命令。

READ BUFFER CAPACITY 命令

描述: 驗證磁碟驅動器是否支援報告配置檔的 READ BUFFER CAPACITY 命令。

適用的媒體: 裝置支援的任何媒體。

測試案例步驟:

  1. 將 GET CONFIGURATION 命令傳送至取得即時串流功能。 檢查回應,如果已設定讀取緩衝區容量區塊 (RBCB) 位。 如果未設定,則磁碟驅動器不支援讀取緩衝區容量命令。 略過測試案例。

  2. 傳送 READ BUFFER CAPACITY 命令,並將區塊位設定為 0,且配置長度等於緩衝區容量結構的大小。

  3. 如果命令無法列印感知鍵,且測試案例失敗。

  4. 重複步驟 2,將 [區塊位] 設定為 1。

  5. 如果命令無法列印感知鍵並失敗命令。

  6. [選擇性]傳送 READ BUFFER CAPACITY 命令,並將數據方向旗標設定為 「到裝置」,並將隨機大小緩衝區填入隨機數據,並將區塊位設定為零。

  7. 如果命令無法列印感知鍵,且測試案例失敗。

結果: 磁碟驅動器應該針對適用的媒體類型正確實作 READ BUFFER CAPACITY 命令。

READ DISC INFORMATION 命令

描述: 若要驗證磁碟驅動器是否支援報告配置檔的 READ DISC INFORMATION 命令。

適用的媒體: 下列任何媒體:

  • DVD+R

  • DVD+RW

  • DVD-R

  • CD-R

  • CD-RW

測試案例步驟:

  1. 傳送 READ DISC INFORMATION 命令,配置長度為 2 以取得標準光碟資訊大小。

  2. 如果命令無法列印感知鍵,且測試案例失敗。

  3. 從回應取得光碟信息長度。 如果長度小於標準光碟資訊區塊大小 (34),則測試案例失敗。

  4. 傳送 READ DISC INFORMATION 命令,配置長度等於步驟 3 加上 2 的數據長度。

  5. 如果命令無法列印感知鍵,且測試案例失敗。

  6. [選擇性]傳送 READ DISC INFORMATION 命令,並將數據方向旗標設定為 「到裝置」,並將隨機大小緩衝區填滿隨機數據和配置長度設定為緩衝區大小。

結果: 磁碟驅動器應該針對適用的媒體類型正確實作 READ DISC INFORMATION 命令。

READ FORMAT CAPACITIES 命令

描述: 若要驗證磁碟驅動器是否支援報告配置檔的 READ FORMAT CAPACITIES 命令。

適用的媒體: 下列任何媒體:

  • DVD+RW

  • DVD-RW 限制覆寫

  • DVD-RAM

  • CD-RW

測試案例步驟:

  1. 傳送配置長度等於 4 的 READ FORMAT CAPACITYIES 命令(容量清單標頭)。

  2. 如果命令無法列印感知鍵,且測試案例失敗。

  3. 從回應取得容量清單長度

  4. 傳送配置長度等於容量清單長度 + 4 的 READ FORMAT CAPACITYIES 命令(容量清單標頭的大小)。

  5. 如果命令無法列印感知鍵,且測試案例失敗。

  6. 檢查容量清單長度是否為8倍的回應。

  7. [選擇性]傳送 READ FORMAT CAPACITIES 命令,並將數據方向旗標設定為 “to the device”,並將隨機大小緩衝區填入隨機數據和配置長度設定為緩衝區的大小。

結果: 磁碟驅動器應該針對適用的媒體類型正確實作 READ FORMAT CAPACITIES 命令。

READ TOC/PMA/ATIP 命令

描述: 驗證磁碟驅動器是否支援報告配置檔的 READ TOC/PMA/ATIP 命令。

適用的媒體: 下列任何媒體:

  • CD-ROM

  • DVD-ROM

  • BD-ROM

測試案例步驟:

  1. 使用CDB中的下列值,傳送READ TOC/PMA/ATIP 命令。

    • Format = 0, MSF = 0, Track Session Number = 1, Allocation Length = 4
  2. 如果命令無法列印感知鍵,且測試案例失敗。

  3. [選擇性]傳送 READ TOC/PMA/ATIP 命令,並將數據方向旗標設定為 “to the device”,並將緩衝區填滿隨機數據和配置長度設定為緩衝區大小。 使用下列值設定 CDB:

    • Format = 0, MSF = 0, Track Session Number = 1, Allocation Length = 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 命令傳送至取得即時串流功能。 檢查回應,如果已設定SET CD Speed (SCS) 位。 如果未設定,則磁碟驅動器不支援 SET CD SPEED 命令。 略過測試案例。

  2. 使用CDB中的下列值,傳送SET CD SPEED 命令。

    • 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/PMA/ATIP 命令,其大小等於來自步驟 1 之回應標頭的數據長度 (4 個字節) + 數據長度。

  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 中的 Starting 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 from step 8 with starting LBA from the step 5

結果: 磁碟驅動器應該針對適用的媒體類型正確實作 READ10 命令。

事件通知

描述: 若要驗證裝置事件通知是否已正確回報給 Windows PNP。

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 如果磁碟驅動器STORAGE_ADAPTER_DESCRIPTOR結構的 BusType 字段設定為 BusTypeSata,則傳送IOCTL_ATA_PASS_THROUGH並要求識別封包裝置信息數據。 在回應中,檢查文字 78 的位 5(支援異步通知功能)和第 5 位文字 79(已啟用異步通知功能)都已設定。 否則,測試失敗

  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
  • Multisession:

    • 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 中寫入數據的大小,從步驟 9 的值。

    • 使用 API IDiscFormat2Data::get_NextWritableAddress取得下一個可寫入的位址。

    • 檢查下一個可寫入位址大於步驟 10 中寫入數據大小的下一個可寫入位址。

    • 從光碟讀取數據,並比較它是否符合步驟 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,並將清除選項設定為空白。 重複步驟 9 到 14。

結果: 磁碟驅動器應該能夠在 IMAPI 的內容中格式化媒體。

寫入雙層媒體

描述: 驗證 在 IMAPI 內容中,針對雙層媒體的 寫入功能。 裝置會以磁碟驅動器所報告的各種寫入速度進行測試。

適用的媒體: 下列任何媒體:

  • DVD+R DL

  • DVD-R DL

測試案例步驟:

  1. 要求使用者插入空白媒體。

  2. 呼叫 API IDiscFormat2Data::get_CurrentMediaStatus來檢查媒體是否空白

  3. 如果媒體不是可重寫的媒體,請要求使用者插入空白媒體。 請重試 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%。

    警告

       最後一個步驟是測試磁碟驅動器是否能夠正確寫入雙層上的數據。

     

結果: 磁碟驅動器應該能夠在 IMAPI 內容中將數據燃燒至雙層媒體的兩層。

唯讀磁碟驅動器

描述: 在開啟的磁碟驅動器上測試只讀磁碟驅動器的讀取功能(可附加)和已關閉的 (完成) 光碟。

警告

   此測試案例需要次要寫入器磁碟驅動器,才能為對應的測試配置檔建立測試數據光碟。

 

適用的媒體: 下列任何媒體:

  • CD-ROM

  • DVD-ROM

  • BD-ROM

測試案例步驟:

  1. 退出寫入器磁碟驅動器匣。

  2. 如果測試配置檔為

    • CD-ROM 要求使用者在寫入器磁碟驅動器中插入CD-R/CD-RW。

    • DVD-ROM 要求使用者在寫入器磁碟驅動器中插入 DVD+R/DVD-R/DVD+RW/DVD-RAM。

    • BD-ROM 要求使用者在寫入器磁碟驅動器中插入 BD-R/ BD-RE。

  3. 插入寫入器磁碟驅動器匣。

  4. 呼叫 API IDiscFormat2Data 來取得寫入速度描述項的清單:: get_SupportedWriteSpeedDescriptors。

  5. 建立隨機大小的隨機數據流,最多 10% 的媒體可用空間。 使用隨機數據填入緩衝區。

  6. 使用步驟 4 的第一個寫入速度描述元值呼叫 API IDiscFormat2Data::SetWriteSpeed 來設定寫入速度。

  7. 使用 IDiscFormat2Data::Write 寫入寫入器磁碟驅動器中的媒體,從步驟 5 寫入數據緩衝區。

  8. 如果寫入器磁碟驅動器匣支援自動退出機制,請退出磁碟驅動器匣。 否則請要求使用者按下退出按鈕

  9. 如果試用產品匣支援自動退出機制,請退出匣,否則請使用者按下退出按鈕。

  10. 要求使用 將媒體從寫入器磁碟驅動器中移除,並將其放在試用產品中。

  11. 如果寫入器磁碟驅動器匣支援自動插入(載入匣)機制,請插入寫入器磁碟驅動器匣。 否則,請要求使用者將匣插入磁碟驅動器。

  12. 如果試用產品匣支持自動插入(載入匣)機制,請插入試用產品匣。 否則,請要求使用者將匣插入磁碟驅動器。

  13. 從試用產品光碟讀取數據,並比較它是否與步驟 7 中寫入媒體的數據相符。

  14. 將 IDiscFormat2Data::ForceMediaToBeClosed 設定為 true,並重複步驟 1 到 13,以在完成的光碟上驗證試用產品。

結果: 磁碟驅動器應該能夠同時讀取已關閉和開啟的媒體。

磁碟驅動器序號

描述: 驗證試用產品傳回的磁碟驅動器序號是否符合 MMC/Mt。 富士規格標準。

警告

   此測試案例需要兩個相同的磁碟驅動器來驗證這兩個磁碟驅動器是否傳回唯一序號。 一個主要測試裝置,另一個是次要試用產品。

 

適用的媒體: 裝置支援的任何媒體

測試案例步驟:

  1. 將 INQUIRY 命令傳送至配置長度等於 05h 的主要測試裝置。

  2. 如果命令成功,請從響應標頭取得額外的長度值。

  3. 將 INQUIRY 命令再次傳送至主要裝置,配置長度設定為 5 個字節,超過步驟 2 的額外長度。

  4. 如果命令成功取得廠商識別、產品識別和產品修訂等級。

  5. 針對次要磁碟驅動器重複步驟 1 到 4,並取得廠商識別、產品識別和產品修訂等級。

  6. 比較步驟 4 和步驟 5 中的廠商識別、產品識別和產品修訂等級值。 如果不符合,則測試案例失敗。

    警告

       這是為了確保兩個試用產品都相同

     

  7. 將 GET CONFIGURATION 命令傳送至主要試用產品,以取得配置長度等於邏輯單元序號功能描述元大小的邏輯單元序號功能。

  8. 檢查功能程式代碼是否符合 LOGICAL UNIT SERIAL NUMBER 功能代碼的回應。 取得額外的長度。

  9. 將 GET CONFIGURATION 命令傳送至主要試用產品,以取得配置長度等於 LOGICAL UNIT SERIAL NUMBER 功能描述元大小以及步驟 8 中報告的必要額外長度。

  10. 在回應中檢查下列內容:

    • 功能程式代碼會與 LOGICAL UNIT SERIAL NUMBER 功能代碼相符。

    • 報告的序號數據位於 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 命令,並要求即時串流功能。 如果未成功,或未設定 Current 位,測試就會失敗。

  7. 如果未設定串流寫入 (SW) 位或寫入速度效能描述元 (WSPD) 位的即時串流功能回應,則測試失敗。

  8. 傳送 GET PERFORMANCE 命令,並要求寫入速度描述元,以及建置和支援寫入速度的陣列。 如果命令未成功,則測試失敗。

  9. 隨機顯示寫入速度陣列。

  10. 如果免費媒體大小超過其完整容量呼叫 DeviceIoControl 的 10%,且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% 媒體容量區塊記錄的整個數據(如果媒體的數據少於 50 MB,則至少為 5 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 的內容中燒毀無間距的原始音訊影像。

命令使用方式

Command 描述

OpticalLogoTest.exe /drive [儲存體 DriveLetter]:\ /log [log] [AdditionalParams] /profile [profile] /RunTestCaseTypes [RunTestCaseTypes]

執行測試。

注意

   如需此測試二進位檔的命令行說明,請輸入 /h

 

命令語法

命令選項 描述

磁碟機

測試光學設備驅動器號。

範例:/drive e:\\

介面卡

path (用於配接器測試)。

範例:/adapter \“PCI\\VEN_8086&DEV_27DF&SUBSYS_01AD1028&REV_01\\3&172E68DD&0&F9\”

PrimaryTestDrive

測試光學設備驅動器號。

範例:/PrimaryTestDrive e:\\

SecondaryTestDrive

次要光學測試設備驅動器號。

範例:/次要試用產品 f:\\

WriterDrive

需要用於測試只讀磁碟驅動器的寫入器驅動器號。

範例:/WriterDrive f:\\

PrimaryDriveTray

主要光學設備匣功能。

範例:/PrimaryDriveTray SupportsEjectInject

SecondaryDriveTray

次要光學設備匣功能。

範例:/SecondaryDriveTray SupportsEjectInject

WriterDriveTray

寫入器磁碟驅動器匣功能。

範例:/WriterDriveTray SupportsEjectInject

profile

執行測試案例指定的配置檔。 配置文件標識碼應以小數和逗號分隔,不含空格。

範例:/profile 9,10,16

seed

產生隨機測試數據的種子值。

範例:/seed 1000

RunTestCaseTypes

只執行測試案例的類別。

範例:/RunTestCaseTypes 裝置

RunTestCase

只執行此測試案例。

範例:/RunTestCase 查詢

自動化

使用機器人變更媒體,以自動化模式執行。

範例:/Automation

AutomationConfigFile

組態檔,用來指定媒體的 bin 位置。

範例:/AutomationConfigFile OpticalLogoTest.exe.config

校準

校正用來變更媒體的機器人。

範例:/校正

標誌

要測試的認證需求層級。

範例:/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.etl

範例:/IMAPIv2TraceLogFile imapiv2-tracelog.etl

cmdPerfTraceAnalysis

執行命令效能分析。

範例:/cmdPerfTraceAnalysis Always

cmdPerfTraceGuidsFile

效能追蹤 GUID 檔案,其中包含追蹤效能數據之元件的 GUID

默認值:perf-guids.txt

範例:/cmdPerfTraceGuidsFile perf-guids.txt

cmdPerfTraceLogFile

效能輸出追蹤記錄檔

默認值:perf-tracelog.etl

範例:/cmdPerfTraceLogFile perf-tracelog.etl

cmdPerfTraceTmfFile

效能追蹤格式描述檔案。

範例:/cmdPerfTraceTmfFile perf-tracelog.tmf

 

檔案清單

檔案 Location

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\

 

參數

參數名稱 參數描述
儲存體 DriveLetter 測試裝置驅動器號
profile
LLU_NetAccessOnly 用來存取測試檔案共享的用戶帳戶。
LLU_Lcl管理員 Usr 用於執行測試的用戶帳戶。
WDKDeviceID 要測試之裝置的實例路徑
log
RunTestCaseTypes
AdditionalParams