WinXP發布的時候,你會發現系統中随處可見的小覆蓋圖标(Overlay Icon):
> 一個小箭頭。大家應該最熟悉這個圖标:它是一個快捷方式的圖标。
> 一隻手心向上的手掌。這個是文件共享的圖标。如果一個文件夾帶有這個圖标則是一個文件共享的根目錄。
> 一個向下的藍色箭頭。這個表示即将寫入到CD的意思。
> 一對藍色的旋轉箭頭。這個圖标可能會讓人感到困惑。它表示一個項目在離線時可用(你需要啟用離線文件夾才能看到它)。
> 一個黑色的時鐘。這個着實讓人難以理解。它的意思是文件已經被歸檔到磁帶并且訪問它需要很長的時間。
即使你的系統上沒有安裝Hierarchical Storage Management,但是你還是會看到上面提到的黑色時鐘圖标,這真是讓人捉摸不透。這通常是某些應用程序(一般是安裝程序)沒有正确的檢查錯誤代碼導緻的。
在上面的代碼片段中,開發者并沒有檢查GetFileAttributes的返回值。如果GetFileAttributes調用失敗,它會返回0xFFFFFFFF。如果此時你不對這個錯誤代碼進行檢查的話,你将會設置所有可能的文件屬性到目标文件上,這些屬性就包括FILE_ATTRIBUTE_OFFLINE。
而FILE_ATTRIBUTE_OFFLINE這個屬性會告訴資源管理器:這個文件已歸檔至磁帶。
老老實實的檢查所有API的返回值是很難的,我的做法是:檢查你覺得需要檢查的API調用。随着年齡的增加,你需要檢查的API可能會越來越多。所以,為了讓開發者寫代碼舒服一點,我建議将異常納入到API返回機制中。
但是這又會顯著降低程序的可預測性和性能:這事兒,挺難的!
,