在Hello China当前版本的实现中,对设备的区分是按照名字来进行的,也就是说,名字是设备唯一的标识。这样如果设备是由多家厂商提供的,那么就可能产生命名冲突,为解决这个问题,建议设备驱动程序编写者在为设备命名的时候,采用能够产生全球唯一设备名字(字符串)的算法,来产生设备名字,而不要随意地命名。需要指出的是,设备名字不同于设备描述,如果设备供应商想对自己的设备做一些简单的描述,那么可以在设备描述里面进行,系统提供了函数接口,可以让用户很容易地得到设备描述信息。
下面列举了几种可以采用的方法来生成全球唯一的字符串,作为设备的名字。设备驱动程序编写者可以采用下列命名方式中的一种,对设备进行命名(如果不按照下列给出的命名方式,则可能产生冲突)。
1.采用全球唯一标识符来命名设备
Microsoft公司提供的一个小程序GUIDGEN.EXE(随Microsoft Visual Studio一起发行)可以产生长度为32B的全球唯一标识符(GUID),比如,下面是该程序产生的一个GUID:
由于采用了独特的算法,可以确保生成的GUID全球唯一,因此,设备驱动程序开发商可以把上述GUID转换成字符串,来命名自己的设备,比如,对于上述GUID,可以转换成下列形式:
也可以转换成下列形式:(www.xing528.com)
总之,只要把GUID表示成字符串形式,然后作为全局变量定义在设备驱动程序中,作为设备的名字,就可以确保不会产生冲突。
2.采用网络接口卡硬件地址命名设备
另外一种可以作为唯一标识符种子的就是以太网接口卡的物理地址(也称为MAC地址)。以太网接口卡的物理地址由统一的组织管理并分配,可以确保全球唯一,该地址由48bit(6B)组成,其中前面三字节是分配给特定厂家的,而后面三个字节,则由该厂家分配。在产生设备驱动标识符的时候,可以直接把一块网络接口卡的MAC地址转换成字符串后作为设备的标识符,比如,网络接口卡的MAC地址为:
则可以把上述标识符转换成字符串:
直接作为设备的标识符。也可以在此基础上,增加一些额外信息作为设备标识符,比如,可以这样操作:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。