在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 14285|回复: 12

GUID的问题

[复制链接]
发表于 2003-11-29 20:39:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
GUID是用来做什么呢?
我刚接触驱动开发,看了好多资料,就是没有找到GUID的具体说明。
斑竹可否具体说一下?
谢谢!
发表于 2003-11-30 01:56:06 | 显示全部楼层

GUID的问题

GUID是微软自己整得一个全局命名得东西,,,
你可以想一下,,世界上那么多公司,,开发那么多软件模块,,
如果大家直接想名字,,然后定义自己得函数,,肯定有重复的,,
当然,名字到无所谓,,如果是一些公用的接口,,名字重复的话,
那就惨了,,于是,微软就想了一个办法,,就是通过GUID来命名,
简单说就是,,通过很多的可变的信息(比如当前cpu温度,当前时间,
网卡mac地址等等)来组成一个很长的数字,来作为一个接口的名字,
微软声称可以n年之内,不会在世界上任何两台计算机之间产生两个
相同的GUID,,大概就是这些了,,详情你找一本COM的书看一下,
应该有帮助,,我记得我是从潘爱民的一本书上看到的。。。
 楼主| 发表于 2003-12-2 20:30:54 | 显示全部楼层

GUID的问题

那GUID标识的是一个设备还是一个接口呢?
比如的电脑的设备管理器里有:
--通用串行总线控制器:
---USB Root Hub
---USB Root Hub
---VIA USB Universal Host Controller
---VIA USB Universal Host Controller
在通用串行总线控制器下有四个设备。这四个设备的GUID是否一样?
在注册表中:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
最后面的数字应该是“通用串行总线控制器”接口类的GUID了。
我想请教斑竹,如果我开发的是个USB设备(象U盘)定义的guid应该也是{36FC9E60-C465-11CF-8056-444553540000}吗?
如果GUID是用来定义接口,那么拥有同一接口类的不同设备如何区分?象我的机子里的四个USB设备,如何从一个GUID来区分不同的设备呢?
谢谢!
不胜感激!

发表于 2003-12-4 23:05:09 | 显示全部楼层

GUID的问题

[这个贴子最后由liuiang在 2003/12/04 11:10pm 第 1 次编辑]

GUID只是一个名字,,标识什么都可以,,我以前写程序用它作为目录的名字,
存储程序运行的所有临时文件。对于COM来说,,都是用他作为coclass和
interface的名字。
而{36FC9E60-C465-11CF-8056-444553540000}是表示usb总线的,
系统察觉到有新的设备添加进来就会通过,如果确定是usb设备,系统就会根据
{36FC9E60-C465-11CF-8056-444553540000}下面的子项的描述去加载驱动,
如果系统在子项里面没找到匹配的设备驱动就提示你安装驱动,等你安装完毕后,
就会在这一项下面再加一个子项。
你的第二个问题我有点摸不到头脑,我虽然不知道你的guid是干什么的,不过
肯定一点,绝对不是{36FC9E60-C465-11CF-8056-444553540000},因为
这个已经被微软指派给usb总线了,如果没猜错的话你是指设备接口的那个guid,
那个id是表征一种设备的,或者说是表征一个驱动的。我先说明一下第三个问题,
最后再连起来说。
不同的设备是用guid区分的,但不是同一个guid,每种(不是每个)设备都有自己
的guid,,我上个回复说得接口和你理解的接口不是一个概念,,那个接口我是
为描述guid而引入的COM的一个概念,很抱歉误导你了,你可以不加理会。
其实整个过程是这样的,,当设备插入usb口子,usb控制器会检测到设备,
然后会发送一些查询信息,从而得到设备的类id等信息,由于是usb总线上的
设备,系统就会在{36FC9E60-C465-11CF-8056-444553540000}键下面找到每项的
infpath,打开文件inf文件然后比较inf文件相应信息(具体比较哪些项我不很
清楚,感觉对于usb和pci两类总线比较的项还是不一样的,只是感觉,不能确定),
找到匹配的以后根据inf文件,去找驱动sys文件,然后装载驱动,然后执行驱动
里面的DriverObject->DriverExtension->AddDevice(),在这里面,
驱动会通过IoRegisterDeviceInterface注册guid(可能就是你说的那个guid),
并且分配一个符号连接名,驱动和硬件这一块到此结束。
应用程序开始工作,最开始要通过注册了的那个guid(可能就是你说的那个guid)
通过调用SetupDiEnumDeviceInterfaces和其他的几个函数来得到符号连接,
得到符号连接以后就可以CreateFile了,,以后就是正常的驱动调用了。。
发表于 2003-12-4 23:12:18 | 显示全部楼层

GUID的问题

很多都是自己理解的,如果不对,还请指正。
 楼主| 发表于 2003-12-5 14:43:03 | 显示全部楼层

GUID的问题

谢谢斑竹的回答。可是我仍然很然。
我把问题整理了一下,发到了你的邮箱里,请你有空的时候给我回复一下。
打扰了。
谢谢!
发表于 2003-12-5 21:19:32 | 显示全部楼层

GUID的问题

附件有点问题,看不到图片。
发表于 2004-7-28 17:01:06 | 显示全部楼层

GUID的问题

请教版主:不同计算机上同一个硬件端口(如并口)guid是不是相同的?
我想通过编写驱动程序访问或读写并口,不知如何实现?请给点儿思路吧。我现在用driver winzard自动生成驱动程序,请问怎么改或添加一下,就访问并口了?好像生成的那个驱动程序只是查找新硬件,如果不插新硬件,能否直接对并口操作呢(并口是计算机已有的,无须驱动阿)?并口的guid是什么?
发表于 2004-7-29 09:47:15 | 显示全部楼层

GUID的问题

driver wizard可以选择并口啊,,俺刚才就选择并口操作了一下,,
创建新驱动里面第三项就是并口了,,你可以尝试一下。。
发表于 2006-1-16 13:48:23 | 显示全部楼层

GUID的问题

版主真是见多识广,我这几天为这个GUID郁闷了好久。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 10:54 , Processed in 0.034773 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表