共用方式為


Windows 機密文件幾家歡樂幾家愁

Raymond Chen

當您插入 CD 或 DVD 光碟片時 ,殼層 (Shell) 就會「嗅出」光碟片上包含哪一種內容類型。這項判斷會提供相關的指引資訊給殼層,以決定應執行的自動播放動作。至於系統「嗅出」內容的具體流程,尚未記載於任何說明文件中,因為這屬於啟發式的技術,未來如果找出更優異的演算法就會予以變更。

如果將演算法記載到說明文件中,就會產生契約效應,如此一來,演算法就無法在後續的版本中進行調整。因此,官方的說法是演算法的規格尚未指定。

如果您有撰寫過 SDK 的說明文件,就知道所謂的說明文件等於一份合約。因為一旦您記載某項產品的行為,就無法進行變更。否則仰賴該產品行為的使用者就會說:「嘿,當初說明文件中不是這樣寫的,您這等於是在遊戲開始之後才在更改遊戲規則耶。」

法律責任撇清了之後,讓我們以極度簡化的方式,了解一下 Windows® XP Service Pack 2 (SP2) 如何針對沒有 autorun.inf 檔案的資料 CD 和資料 DVD 進行分類 (未來的 Service Pack 以及未來的 Windows 版本可能會採取不同的行為)。我之所以用「極度簡化」,是因為實際的演算法是以 61 個步驟的決策表所組成,其中會考慮更多、更細膩的資訊,例如前景應用程式是否有回應 [查詢是否取消自動播放功能] 的通知、是否正在執行全螢幕的程式,甚至於這是否為剛剛裝上擴充槽或剛剛從擴充槽卸除的筆記型電腦。而我則只要探討內容分類步驟。

  

首先,殼層會檢查使用者是否已針對所有內容類型指定 [不要有任何動作]。如果是,就沒有必要再進行判斷。於是不會有任何動作。

否則,殼層就需要採取行動。它會檢查光碟上深達四層目錄的每個檔案,並根據察覺的類型將檔案歸類成下列類別之一:影像、音樂、影片。

無法歸類到上述類別的檔案,都會被忽略。如果所有檢查過的檔案都屬於同一個類別 (舉例而言,如果光碟上的所有檔案都是音樂檔),這就會建立光碟的類型。如果找到一個以上的類別,則會將光碟定義為有混合的內容。

這代表只要您的音樂光碟有專輯圖片,即使整張 CD 都是音樂檔案,Windows XP SP2 也會將它視為有混合的內容。這就是為什麼演算法未來可能需要進行調整。假設未來有更改演算法,亦即我們決定有很多 MP3 和少數幾張圖片的光碟,不應該被判斷為有混合的內容。然後某家公司的 CD 可能會有很多音效檔案及少數圖片,這家公司當然希望 CD 可以偵測為有混合的內容。但是由於演算法的改變,CD 會錯誤地分類成音樂。如此一來,這家公司就會不滿。但到底誰應該為此問題負責?這家公司是否不應該過度依賴此演算法?還是應該要怪 Windows,因為其中的演算法有所變更?

您瞧,Windows Vista™ 中的演算法就變了 - 雖然只是很小的改變。Windows Vista 中會先執行數個檢查,看看是否有特定的光碟內容配置。舉例而言,如果光碟的根目錄有「DCIM」資料夾,就會假設其中都是數位相片。會不會有人注意到這一點,就讓我們拭目以待吧。

Raymond Chen 的網站 The Old New Thing (英文),以及採用相同標題做為書名的書籍 (Addison-Wesley,2007),都有關 Windows 的歷史和 Win32 程式設計。Raymond 對於太陽的長相很好奇。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.