关于Overlay Icon

WinXP发布的时候,你会发现系统中随处可见的小覆盖图标(Overlay Icon):
> 一个小箭头。大家应该最熟悉这个图标:它是一个快捷方式的图标。
> 一只手心向上的手掌。这个是文件共享的图标。如果一个文件夹带有这个图标则是一个文件共享的根目录。
> 一个向下的蓝色箭头。这个表示即将写入到CD的意思。
> 一对蓝色的旋转箭头。这个图标可能会让人感到困惑。它表示一个项目在离线时可用(你需要启用离线文件夹才能看到它)。
> 一个黑色的时钟。这个着实让人难以理解。它的意思是文件已经被归档到磁带并且访问它需要很长的时间。

winXP怎么显示小图标(关于那些WinXP里的小图标)(1)

即使你的系统上没有安装Hierarchical Storage Management,但是你还是会看到上面提到的黑色时钟图标,这真是让人捉摸不透。这通常是某些应用程序(一般是安装程序)没有正确的检查错误代码导致的。

winXP怎么显示小图标(关于那些WinXP里的小图标)(2)

在上面的代码片段中,开发者并没有检查GetFileAttributes的返回值。如果GetFileAttributes调用失败,它会返回0xFFFFFFFF。如果此时你不对这个错误代码进行检查的话,你将会设置所有可能的文件属性到目标文件上,这些属性就包括FILE_ATTRIBUTE_OFFLINE。
而FILE_ATTRIBUTE_OFFLINE这个属性会告诉资源管理器:这个文件已归档至磁带。

总结

老老实实的检查所有API的返回值是很难的,我的做法是:检查你觉得需要检查的API调用。随着年龄的增加,你需要检查的API可能会越来越多。所以,为了让开发者写代码舒服一点,我建议将异常纳入到API返回机制中。
但是这又会显著降低程序的可预测性和性能:这事儿,挺难的!


winXP怎么显示小图标(关于那些WinXP里的小图标)(3)

,