CN101375260A - 经由可信介质建立无线通用串行总线(wusb)连接 - Google Patents

经由可信介质建立无线通用串行总线(wusb)连接 Download PDF

Info

Publication number
CN101375260A
CN101375260A CNA2006800204178A CN200680020417A CN101375260A CN 101375260 A CN101375260 A CN 101375260A CN A2006800204178 A CNA2006800204178 A CN A2006800204178A CN 200680020417 A CN200680020417 A CN 200680020417A CN 101375260 A CN101375260 A CN 101375260A
Authority
CN
China
Prior art keywords
connection
attribute
association
equipment
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2006800204178A
Other languages
English (en)
Inventor
F·贝萨尼亚
G·T·斯里克
R·E·奥尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101375260A publication Critical patent/CN101375260A/zh
Pending legal-status Critical Current

Links

Images

Abstract

一种经由可信介质的用于非可信介质(例如无线)设备配置的可扩展架构。该架构包括用于使用例如有线连接的可信介质,来在连接设备和主机设备之间建立无线通用串行总线(WUSB)连接的系统和方法。在一个实现中,连接设备通过可信介质向主机设备发送关联请求。该关联请求包括与连接设备的WUSB组件有关的设备属性。作为响应,主机设备解析并确认该关联请求,并确定利用WUSB连接的连接属性。主机设备通过可信介质向连接设备发送具有连接属性的响应。使用连接属性,连接设备配置WUSB组件,并与主机设备建立WUSB连接。

Description

经由可信介质建立无线通用串行总线(WUSB)连接
发明概述
以下提供了本发明的简化概述,以便于提供对本发明某些方面的基本理解。本概述不是本发明的扩展总览。它并非旨在标识本发明的关键/重要的元素,或者刻划本发明的范围。其唯一目的是以简单方式来描述本发明的某些概念,作为稍后提供的更详细的序言。
以下描述经由可信介质的非可信介质(例如无线)设备配置的扩展架构。该架构可用于关联应用非可信介质(例如无线连接)的设备。利用例如有线连接可信介质来实现该关联。
该架构包括利用诸如有线连接的可信介质在连接设备和主机设备之间建立无线通用串行总线(WUSB)连接的系统和方法。在一个实现中,该连接设备通过可信介质向主机设备发送关联请求。该关联请求包括与连接设备的WUSB组件关联的设备属性。作为响应,主机设备解析和确认该关联请求,并确定使用WUSB的连接的连接属性。该主机设备通过可信介质向连接设备发送带有连接属性的响应。通过使用该连接属性,连接设备配置WUSB组件,并建立与主机设备的WUSB连接。
附图简述
图1是根据本发明的一个方面的关联架构的框图。
图2是根据本发明的一个方面的关联请求的视图。
图3是根据本发明的一个方面的关联响应的视图。
图4是根据本发明的一个方面的关联管理系统的框图。
图5是根据本发明的一个方面的关联管理系统的框图。
图6是根据本发明的一个方面的关联处理程序(handler)系统的框图。
图7是根据本发明的一个方面的关联驱动器系统的框图。
图8是根据本发明的一个方面的对设备进行关联的方法的流程图。
图9是根据本发明的一个方面的方便设备关联的方法的流程图。
图10是根据本发明的一个方面的经由USB连接来关联设备的方法的流程图。
图11是进一步描述图10的方法的流程图。
图12是进一步描述图10和11的方法的流程图。
图13是根据本发明的一个方面的关联管理方法的流程图。
图14是根据本发明的一个方面的关联管理方法的流程图。
图15是进一步描述图14的方法的流程图。
图16是进一步描述图14和15的方法的流程图。
图17是根据本发明的一个方面的关联处理方法的流程图。
图18示出了本发明可在其中实施的示例性操作环境。
图19示出了PONG系统的示例。
图20示出了操作系统的设备管理器架构的示例性USB驱动栈。
图21示出了WUSB设备连接到主机设备的示例操作。
图22示出了用于利用本文所述的系统来连接WUSB设备与主机设备的示例进程。
图23示出了用于利用本文所述的特定数据结构来关联设备的示例进程。
本发明的详细描述
现在参照附图来描述本发明,在附图中类似的附图标记用来标注类似的组件。在下面的描述中,出于说明目的,阐述了许多具体细节,以便于提供对本发明透彻理解。然而,显而易见的是本发明可在没有这些具体细节的情况下实施。。在其它情况下,以框图形式示出公知结构和设备,以便于描述本发明。
如本申请所用的,术语“组件”、“处理程序(handler)”、“模型”、“系统”等旨在指代计算机相关实体、硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是,但是不限于,运行在处理器上的进程、处理器、对象、可执行的程序、执行线程、程序和/或计算机。作为说明,运行在服务器上的应用程序和该服务器都可以是组件。一个或多个组件可以驻留在执行的进程和/或线程中,且组件可以位于一个计算机上和/或分布在两个或多个组件之间。而且,这些组件可以从具有存储其上的各种数据结构的各种计算机可读介质来执行。组件可以根据具有一个或多个数据分组的信号(例如,来自经由该信号与本地系统、分布式系统中其它组件交互和/或在诸如因特网的网络上与其它系统交互的一个组件的数据),经由本地和/或远程进程来通信。根据本发明,计算机组件可以存储在例如计算机可读介质上,包括但不限于,ASIC(专用集成电路)、CD(压缩盘)、DVD(数字视频光盘)、ROM(只读存储器)、软盘、硬盘、EEPROM(电可擦可编程只读存储器)和存储棒。
此外,“可信介质”是指可信连接,关联信息可以通过它传递以关联非可信介质。可信介质的示例包括但不限于串行连接、并行连接和/或通用串行总线(USB)连接。“非可信介质”是指为了建立信任而被关联的介质。例如蓝牙和/和IEEE802.11的无线连接就是非可信介质的示例。
参考图1,示出了根据本发明的一个方面的关联架构100。该架构100可用于关联使用非可信介质(例如无线连接)的设备110。通过使用例如有线连接的可信介质来实现该关联。
“关联请求”是指从设备110发送到驱动器120来发起关联的数据块。然后,该关联请求被转发到关联管理器130,关联管理器将该关联请求转发到适当的处理程序140。“关联响应”是指从驱动器120发送到设备110来完成关联(例如成功和/和不成功)的数据块。
架构100有助于设备110经由非可信介质(例如无线连接)来(例如安全地)通信的配置。设备110的配置可以至少部分地基于经由可信介质(例如有线连接)交换的信息。在一个示例中,设备110向驱动器120发送关联请求,并从驱动器120接收关联响应。如果关联成功,关联响应可以包括例如配置信息(例如加密密钥),以使设备110能够经由非可信介质来(例如安全地)通信。如果该关联不成功,关联响应可以包括例如错误信息。
在一个示例中,设备110是也包括USB连接的启用无线的数码相机。该USB连接(可信介质)可用于配置数码相机的无线连接(非可信介质)。例如,“发现新硬件”向导可用于选择和/或创建经由架构100传送到数码相机的无线配置文件。一旦配置文件信息已经经由USB连接被传送到数码相机,则该USB连接可以断开,且数码相机可以经由无线连接通信。
例如,驱动器120可以将经由可信介质从设备110接收的关联请求引导到关联管理器130。驱动器120还可以经由可信介质向设备110提供从关联管理器130接收的关联响应。在另一个示例中,驱动器120生成关联请求并将其提供给关联管理器130。可任选地,驱动器120还可以确定关联请求发出的合适时间。
在另一个示例中,特定驱动器120可用于配置多个非可信介质。例如,驱动器120可用于经由USB连接与经由多个非可信介质通信的多个设备110通信。
关联管理器130向适当组件提供关联数据。关联管理器130可以从驱动器120接收关联请求。至少部分地基于关联请求中的路由信息,关联管理器130可以将与关联请求相关联的信息提供给特定处理程序140以供处理。一旦特定处理程序140完成了关联请求的处理,该处理程序140向关联管理器130提供关联响应。至少部分地基于关联响应中的路由信息,关联管理器130可以将关联响应提供给请求驱动器120。
处理程序140与实现设备安装的服务(未示出)接口。在一个示例中,处理程序140是架构100中明确知道关联请求唯一组件。处理程序140至少部分地基于关联请求的内容采取动作,如以下更详细描述的。例如,动作可依赖于寻求通过关联请求来建立的连接类型。一旦特定处理程序140完成了关联请求的处理,处理程序140就可以向关联管理器130提供关联响应。
架构100可以包括存储与一个或多个处理程序140关联的标识信息的处理程序注册表150。关联管理器130可以采用存储在处理程序注册表150中的标识信息来确定向多个处理程序140中的哪个提供特定的关联请求。
此外,架构100可以任选地包括存储与一个或多个驱动器120相关联的标识信息的驱动器注册表160。关联管理器130可以使用存储在驱动器注册表160中的标识信息来确定在例如初始化期间实例化一个或多个驱动器120中的哪个(如下所述)。
尽管被描述为单独的实体,本领域的技术人员将认识到,设备110可以包括发送和/或接收关联请求的对象以及最终与主机关联的对象(例如目标设备)。
在一个示例中,架构100仅支持一个关联请求和相关联的关联响应。在本示例中,来自设备110的方便关联所需的信息被嵌入在关联请求中。类似地,设备110所需的方便关联的信息被嵌入到关联响应中。
参照图2,示出了根据本发明的一个方面的关联请求200。关联请求200包括关联请求报头210和一个或多个关联请求属性220(例如属性类型、长度和数据)。属性是关联请求和/或响应中的单独项。例如,关联请求报头210可以包括形式上与以下相关于关联请求属性220所述的类似的一组全局定义的请求属性。
在一个示例中,关联请求和/或关联响应被组织在可解析流中。该流包括一系列属性,每个属性各自具有定义类型和相关联数据。这有助于架构的灵活性和扩展性。在表1中列出示例性属性结构:
                 表1
 
Byte Offset(偏移字节) Field Length(字段长度) Field Name(字段名) Description(描述)
0 2 AttributeType(属性类型)    描述特定属性的标识符
2 2 AttributeDataLength(属性数据长度)      该属性的数据字段的字节长度
4 0-0xFFFF Data(数据) 该特定属性的数据
这种示例性属性结构可以定义为,例如:
                 表2
typedef struct_PNG_ATTRIBUTE{
  USHORT AttributeType;
  USHORT AttributeDataLength;
  PBYTE Data;
}PNG_ATTRIBUTE,*PPNG_ATTRIBUTE;
在一个示例中,存在旨在由系统自身使用的若干预定义属性类型(例如多种关联类型通用的),且并不特指任何特定的关联类型。
                  表3
 
AttributeTypeValue(属性类型值)           Attribute Name(属性名) AttributeDataLength(属性数据长度)         Description(描述)
0x0000 AssociationType(关联类型) Sizeof(GUID) 这是关联数据遵从的类型的标识符。是当处理程序被定义时所定义的唯一GUID。该值可以用于两个目的。首先,它定义了什么样的软件组件应该处理关联请求(例如蓝牙处理程序)。第二,它定义了属性遵循的范围,因为大多数属性类型仅相对于其AssociationType是唯一的。     
0x0001 Length(长度) 4 这是请求或响应的总长度,包括AssociationType和Length属性。
0x002 MaximumResponseLength(最大响应长度)         4 这是AssociationResponse的最大支持字节长度。这可以通过例如设备的资源约束而确定。       
0x0003 AssociationStatus(关联状态)        4 这是关联的状态并包括在Response中。          
0x0004-0x1000 RESERVED保留 0-0xFFFF 在本示例中,这些AttributeType值被保留以便以后使用,且不用于任何AssociationType专用属性。                         
示例性关联状态值是:
                 表4
 
Value(值) Name(名称) Description(描述)
0x0000 ASSOCIATION_SUCCESS 关联成功完成,且响应有效。
0xC001 ERROR_MALFORMED_ASSOCIATION_ 关联请求没有被正确形成。
 
REQUEST
0xC002 ERROR_ASSOCIATION_TYPE_NOT_SUPPORTED                    在AssociationRequest中指定的关联类型不具有已注册的处理程序。    
关联请求
在本实施例中,关联请求是一系列的属性。第一属性是AssociationType(关联类型)。它用于标识应将请求引导到哪个处理程序。在本示例中,该值是由处理程序(或者是与该处理程序相关联的某些规范)定义的GUID。例如,为了关联蓝牙设备,可能存在蓝牙专用GUID,以及指定其处理该专用GUID的处理程序。
在关联请求中的第二属性是长度。它是在该请求中包括AssociationType和Length字段本身的所有属性的总长度。它用于帮助解析,从而如果组件对特定AssociationType不感兴趣,则它可以跳过整个请求而不解析其中每个属性。
在本示例中,仔细定义紧随长度的属性,以帮助简单的设备能够通过最小的处理来实现基本关联(例如,具有全硅解决方案(silicon-only solution)而无固件的设备)。为了如此实现,能够简单地跳到结构中的预定偏移来提取所需数据是很有帮助的。因此,在本示例中,紧随长度的属性包括为执行基本关联所需的最小数据量。此外,该属性可以以预定持续排布并且始终出现。在一个示例中,基本上所有的这种所需数据都包括在单个属性中。在本示例中,任何可变长度字段都位于这些基本属性的最后,以便不影响关联请求中的偏移。
在另一个示例中,可以使用若干属性,每个包括少量数据。因此可以理解,如果有的话,则可跟随有任意数量的属性,以便于例如提供扩展的功能。
关联响应
参照图3,描述了根据本发明的一个方面的关联响应300。该关联响应300包括关联响应报头310,以及零个、一个或多个关联响应属性320。例如,关联响应报头可以包括形式上与以下相关于关联响应属性320所述的相似的一组全局定义的请求属性。
关联响应属性320是包括属性类型、长度和数据的数据段。在一个示例中,与上述关联请求类似,关联响应是一系列属性。在本示例中,第一属性是AssociationType(关联类型)。它用于回送在该响应中产生的关联请求的AssociationType。
关联响应中的第二属性是长度。它是该请求中包括AssociationType和长度字段本身的所有属性的总长度。它被用来帮助解析,从而如果组件对特定AssociationType不感兴趣,则它可以跳过该响应而不解析其中每个属性。
关联响应的第三属性是AssociationStatus(关联状态)。这是为了通知设备关联请求的结果。在本示例中,如果关联进程成功,则该值是0x0000,表示该设备可以继续读取关联响应中的属性。如果该值是0xc0001,则主机就找不到能够处理该指定AssociationType的处理程序。这样,该设备就不应对该关联响应中其它属性作出任何假设。
如上所述,仔细定义紧随AssociationStatus的属性,以使简单设备能够通过最小处理来实现基本关联。在本示例中,为了如此实现,能够简单地跳到结构中的预定偏移来提取所需数据是很有必要的。因此,这些属性包括执行基本关联所需的最小数据量。在本示例中,它们还可以按预定次序排布,并且始终出现。任何可变长度字段都位于这些基本属性的最后,以便不影响关联请求中的偏移。如果有的话,可跟随任意数量的属性,以便于提供扩展的功能。
参考图4,示出了根据本发明的一个方面的关联管理系统400。该关联管理系统400包括具有管理器通信组件420和处理程序识别组件430的关联管理器410。该系统400还包括处理程序注册表150以及可任选的驱动器注册表160。
关联管理器410负责向适当组件(例如处理程序和/或驱动器)提供关联数据(例如关联请求和/或关联响应)。管理器通信组件420可以从驱动器(未示出)接收关联请求。管理器通信组件420可以向处理程序标识组件430提供关联请求的至少一部分(例如关联请求报头)。
基于由管理器通信组件420提供的信息和存储在处理程序注册表150中的标识信息,处理程序标识组件430标识向其提供关联请求的特定处理程序(未示出)。在一个示例中,关联管理器410加载由处理程序标识组件430标识的处理程序。在另一个示例中,处理程序处在初始化状态(如以下更详细描述的)。此后,管理器通信组件420向由处理程序标识组件430标识的处理程序提供与关联请求相关联的信息。
一旦处理程序已经处理了关联请求,该处理程序向管理器通信组件420提供关联响应。然后,管理器通信组件420向请求驱动器提供关联响应。
在一个示例中,关联管理器410验证该关联请求。例如,该关联管理器410可以确定是否良好地形成。如果该请求不是良好形成的,则关联管理器410可以生成指示该关联请求是残缺的关联响应(例如。状态属性设置为ERROR_MALFORMED_ASSOCIATION_REQUEST),并向请求驱动器提供该关联响应。在该示例中,关联管理器410利用以下标准来确定关联请求是否是良好形成的:
a.该请求长度至少足够大来保持Association Type和Length属性(例如36字节);
b.第一属性是Association Type,并且其长度大小合适(例如,基于与特定处理程序相关联的全局唯一标识符(GUID));
c.第二属性是Length,并且大小合适(例如ULONG);
d.Length属性的值大于Association Type和Length属性(例如36字节),并且小于或等于请求的长度;
e.每个后续属性具有一长度,使得当添加到其在请求中的当前位置时,不产生比在Length属性中的值更大的值;
f.刚好一个关联类型属性和刚好一个Length属性在请求中出现。
然后,关联管理器410确定对于包括在关联请求中的指定的关联类型(例如存储在处理程序注册表150中的GUID)是否存在已经注册的处理程序。如果没有发现处理程序,那么关联管理器410可以生成指示所请求的的关联类型不被支持的关联响应,并将该关联响应提供给请求驱动器。
如果发现了处理程序,在本示例中,该关联管理器410可以解析该关联请求,并提取属性列表。然后,关联管理器410可以将所提取属性的列表提供给特定处理程序。
如果关联管理器410向特定处理程序提供所提取属性的列表没有成功,则关联管理器410可以生成指示特定处理程序没有响应的关联响应,并将该关联响应提供给请求驱动器。
如果关联管理器410成功地将所提取属性的列表提供给特定处理程序,则在由处理程序完成处理后,在该实施例中,该关联管理器410从处理程序接收关联响应属性列表。关联管理器410可以确定该关联响应属性列表是否是良好形成的。例如:
a.正好存在一个状态属性;
b.不出现Length属性和关联类型属性(例如,由关联管理器410添加的);
c.如果关联请求包括最大响应长度属性,那么属性的总长度必须小于该值。
如果该响应是良好形成的,则关联管理器410至少部分地基于关联响应属性列表生成关联响应(例如字节数组)。例如,该关联管理器410可以:
a.累加在响应属性列表中的所有属性的总大小;
b.添加关联类型和长度属性所需大小;
c.分配足够保持该响应的缓冲器;
d.将在缓冲器中的第一属性设置为关联请求的关联类型;
e.使用所计算的响应长度,将长度属性添加到缓冲器;
f.添加关联状态属性;
g.按照在列表中的次序来添加每个附加属性。
然后,关联管理器410可以向请求驱动器提供关联响应。
在一个示例中,关联管理器实现以下接口:
                 表5
interface IManager
{
 HRESULT SendAssociationRequest(BYTE*AssociationRequest,
ULONG AssociationRequestLength,PBYTE*AssociationResponse,
PULONG AssociationResponseLength);
}
SendAssociationRequest()被驱动器调用,来启动关联进程。关联响应被返回为易于发送回驱动器的字节数组。在一个示例中,驱动器负责释放AssociationResponse(关联响应)。
参照图5,示出了根据本发明的一个方面的关联管理系统500。该系统500包括关联管理器510、处理程序注册表150、驱动器注册表160和初始化组件520。
关联管理器510负责向适当组件(例如处理程序和/或驱动器)提供关联数据(例如关联请求和/或关联响应),如上所述。然而,在本示例中,初始化组件520使用存储在驱动器注册表160中的信息来确定例如在系统500的初始化期间实例化一个或多个驱动器(未示出)中的哪个。例如,驱动器可以在计算机系统(未示出)的配置期间被注册(例如手动地和/或自动地)。
在一个示例中,在系统初始化时,初始化组件520分别至少部分地基于存储在驱动器注册表160和处理程序注册表150中的信息来标识驱动器和处理程序。之后,初始化组件520创建所标识的处理程序和所标识的驱动器的实例。
在本示例中,对于每个处理程序,关联管理器510可以检索关联类型数,并分配相关联的存储缓冲器(例如关联类型数*sizeof(GUID))。该缓冲器可用于从处理程序检索关联类型。在另一个示例中,处理程序分配存储空间,并将其提供给关联管理器。
关联类型可以是表示处理程序支持的特定关联类型的GUID数组。对于每个GUID,可向存储在处理程序注册表中的GUID至Handler(处理程序)的映射列表添加条目。例如:
                 表6
typedef struct_ASSOCIATION_TYPE_MAPPING{
     GUID AssociationType;
     IHandler Handler;
}ASSOCIATION_TYPE_MAPPING,
*PASSOCIATION_TYPE_MAPPING;
则该映射列表可以由关联管理器510用来确定关联请求到合适处理程序的路由。
在该示例中,一旦已经创建了处理程序并且查找到了其关联类型,则初始化组件520激活驱动器。在处理程序已经被加载和初始化之后进行激活,以确保在处理程序被查找到和加载之前关联请求都不会被接收。例如,为了激活驱动器,可以调用“Start()”方法。
然后,参照图6,示出了根据本发明的一个方面的关联处理程序系统600。该系统600包括处理程序610,处理程序包括请求组件620、响应组件630和关联处理器。
处理程序610(以及其它的可能组件(未示出))使用关联请求并生成与关联响应相关联的信息。
例如,请求组件620可以从关联管理器(未示出)接收与关联请求相关联的信息(例如,关联请求和/或属性的解析列表)。请求组件620可以解析与关联请求相关联的信息的内容,以确定要采取什么动作。关联处理器640经由服务650来实施该动作。该动作依赖于例如要建立的连接类型。一旦已经完成了这些动作,则关联处理器640可以向响应组件630提供关于关联的信息。然后,响应组件630可以生成与关联响应相关联的信息(例如,关联响应和/或属性列表),该信息可以被提供给关联管理器。
在一个示例中,多个处理程序610实现了以下COM接口:
               表7
interface IpngHandler
{
       //Properties
       HRESULT Manager([in]IPngMgr newVal);
       HRESULT AssociationTypes([out,retval]PGUID*pVal);
       HRESULT AssociationTypeCount([out,retval]short*pVal);
       //Methods
       HRE SULT               HandleAssociationRequest(IAttributeList*
RequestAttributes,IAttributeList** ResponseAttributes);
在本示例中,“管理器”是指向关联管理器的接口指针。此外,“AssociationTypes(关联类型)”返回PONG Handler可以处理的AssociationType GUID数组。类似地,“AssociationTypeCount(关联类型数)”是PONG Handler可以处理的AssociationTypes的数目。当接收了处理程序610报告其支持的关联请求时,“HandleAssociationRequest()”被关联管理器调用。“RequestAttributes”是属性结构列表。期望处理程序610分配必要的存储器来返回作为属性结构列表的ResponseAttributes,其中属性结构是将被返回到设备(未示出)的属性。
在另一个示例中,处理程序610在例如数据库中存储有关设备的信息以供以后一旦在目标介质上发现该设备则进行安装。例如,特定处理程序610可以涉及Wi-Fi目标介质。在本示例中,期望采用Wi-Fi目标介质的设备以属性列表的形式发送关联请求并接收关联响应。属性列表可以由处理程序610提供给随后形成关联响应的关联管理器。
对于以下的表9、10和11,“属性”是指与属性元素相关联的友好名称。“Attribute ID(属性ID)”是用于标识属性列表中的属性元素的标识符(例如,标号)。“Length”是指在属性元素中的数据的长度。属性长度可以是变化的和/或固定的,在本示例中,以字节表示。长度值还可以指定最大长度。在一个示例中,在关联响应中可以使用固定长度使得对该值的偏移是确定的;有利于设备解析响应的能力。属性的实际值可以不用尽分配给该数据的整个长度。这样,附加字段可以指定属性数据的实际长度。“Allowed Values(允许值)”是指允许值字段描述由设备支持的值。如果要求允许值,则表示如果该值包含在属性列表中则设备必须支持它。除非在表9、10和/或11中说明,否则这些值应该被假定为是要求的。如果允许值是可选的,那么该设备就不需要支持该值,但是应该对将其包括在属性列表中做好准备。可选值可能会在该规范的其它版本中要求。
无线协议
IEEE 802.11标准集定义了两种网络类型:加密网络(例如WEP网络)和未加密网络。由于公知的WEP协议的弱点,无线工业支持IEEE 802.1x标准作为解决在WEP协议中密钥缺陷的机制,这些缺陷是用户认证、加密密钥管理和加密密钥分布。对于WEP-加密网络,用户需要提供加密密钥,并且对于启用802.1x的网络,如果用户具有有效的证书(例如,数字证书或用户名和口令)则密钥是自动提供的。对于被加密的802.11网络,出现了可用性问题:当前不可能先验地确定用户是否需要输入WEP密钥或者网络是否支持无需输入密匙的802.1x。
为了解决WEP算法中示为密码薄弱的根本问题,引入对802.11标准集的安全性增强,称为Wi-Fi保护接入(WPA)。通过指定WPA允许访问点包括在其信标帧中的信息元素,WPA也可以解决原始802.11标准的可用性问题中的某些。该信息元素描述了WPA预共享密钥模式(WPA-PSK),即网络是否要求用户输入加密密钥,或者“WPA模式”,即密钥是否根据用户的证书来自动提供。
有线等效保密
WEP由IEEE802.11标准定义,并且旨在提供等同于有线网络的数据机密性级别。由于无线LAN网络的特性,很难实现监视对网络的物理接入的安全基础结构。与要求物理连接的有线网络不同,在无线接入点(AP)范围内的任何人都可以发送和接收帧,并监听被发送的其它帧。这使得对无线LAN帧的偷听和远程监探非常容易。
通过加密在无线节点之间发送的数据,WEP提供数据机密性服务。对于802.11帧的WEP加密是通过在802.11帧的MAC报头中设置WEP标志来表示的。通过在无线帧的加密部分中包括完整性校验值(ICV),WEP提供避免随机误差的数据完整性。
下表示出了WEP定义的两种共享密钥:
               表8
 
密钥类型 描述
多播/全局密钥 帮助保护从无线AP到所有其连接的无线客户端的多播和广播通信量的加密密钥。                                  
单播会话密钥 帮助保护在无线客户端和无线AP之间的单播通信量以及由无线客户端向无线AP发送的多播和广播通信量的加密密钥。  
WEP加密采用具有40位和104位加密密钥的RC4对称流密码。
Wi-Fi保护接入
WPA是被设计为基于WEP的安全特性而改进的Wi-Fi标准。与WEP不同,在WPA中要求802.1x认证。通过WPA,要求单播和全局加密密钥的密钥更新(rekey)。对于单播加密密钥,临时密钥完整性协议(TKIP)对每个帧改变密钥,且该变化在无线客户端和无线接入点(AP)之间同步。对于全局加密密钥,WPA包括用于无线AP向连接的无线客户端公告改变的密钥的设施。
TKIP用比WEP算法更强大的加密算法来代替WEP。在确定了加密密钥之后,TKIP提供安全配置校验;为每个帧的单播加密密钥的同步变化;以及每个预共享密钥认证的唯一开始单播加密密钥的确定。
WPA还采用称为“Michael”的方法,它指定了计算8字节消息完整性代码(MIC)的算法。MIC位于IEEE 802.11帧的数据部分和4字节完整性校验值(ICV)之间。MIC字段与帧数据和ICV一起被加密。
WPA是一种过渡标准,在IEEE的802.11i标准完成时会被它所代替。
Wi-Fi处理程序
关联类型是一种包括在关联请求和关联响应的报头部分中的属性,并且与数据属性分离。这种属性由关联管理器用来将关联请求转发到正确的处理程序。在
本示例中,Wi-Fi处理程序410具有以下所要求的关联类型:
               表9
 
Attribute(属性)    Attrib ID(属性ID)  Length(长度) R/O Allowed Values(允许值)
Association typ(关联类型)     0x0000 16B R F55BDC92-7827-4C91-B784-0EC8A152FADA          
关联请求的数据部分包括属性类型专用的属性。下表标识了关联管理器可以转发到Wi-Fi处理程序610的示例性属性:
               表10
 
Attribute(属性)    Attrib ID(属性ID)  Length(长度) R/O Allowed Values(允许值)
MACAddress 0x1001 6B O 对应于设备上的802.11接口的48位值
 
(MAC地址)
NetworkAuthenticationType Flags(网络认证类型标志) 0x1002 2B R 这些标志允许设备传递Network Authtype(网络认证类型)中哪些类型被支持。(1=支持,0=不支持):该字段的值是以下值的一个或多个的位OR:0x0001=Open0x0002=WPAPSK0x0004=Shared0x0008=WPA0x0010=WPA-NONE0x0020=WPA2所有其它的值被保留并应该设置为0。
DataEncryptionType Flags(数据加密类型标志) 0x1003 2B R 这些标志允许设备传递“DataEncryption type(数据加密类型)”中哪些类型被支持。(1=支持,0=不支持):这个字段的值是以下值的一个或多个的位OR:0x0001=WEP0x0002=TKIP0x0004=AES所有其它的值被保留并应该被设置为0。                                 
ConnectionType Flags(连接类型标志) 0x1004 1B R 这些标志允许设备传递“Connectiontype(连接类型)”中哪些类型被支持。(1=支持,0=不支持):这个字段的值是以下值的一个或多个的位OR:0x01=ESS0x02=IBSS                        
 
所有其它的值被保留并应该被设置为0。                             
MACAddress(MAC地址)
MAC地址是包括MAC Address(MAC地址)的48位值的6字节值。例如:0x00 0x07 0xE9 0x4C 0xA8 0x1C。
Network Authentication Type Flags(网络认证类型标志)
该标志集允许设备发送哪个“Network Authentication type(网络认证类型)”的类型被支持的信号。该信息可以用于诊断目的。如果设备不支持所要求的属性,则用户可以得到通知并得到可校正该问题的动作指令。在本示例中,这个字段的值是以下值的一个或多个的位OR:
0x0001=Open
0x0002=WPAPSK
0x0004=Shared
0x0008=WPA
0x0010=WPA-NONE
0x0020=WPA2
在本示例中,其它的值被保留并设置为0。
Data Encryption Type Flags(数据加密类型标志)
该标志集允许设备发送哪个“Data Encryption Type(数据加密类型)”的类型被支持的消息。该信息可以用于诊断目的。如果设备不支持所要求的属性,则用户可以得到通知并得到可校正该问题的动作指令。在本示例中,这个字段的值是以下值的一个或多个的位OR:
0x0001=WEP
0x0002=TKIP
0x0004=AES
再次地,在本示例中,其它的值被保留并设置为0。
Connection Type Flags(连接类型标志)
该标志集允许设备发送哪个“Connection type(连接类型)”的类型被支持的消息。该信息可以用于诊断目的。如果设备不支持所要求的属性,则用户可以得到通知并得到可校正该问题的动作指令。这个字段的值是以下值的一个或多个的位OR:
0x01=ESS(扩展服务集)
0x02=IBSS(独立基本服务集)
在本示例中,其它的值被保留并设置为0。
至少部分地基于处理程序610与服务650的交互,响应组件630生成与关联响应相关联的信息。继续Wi-Fi处理程序的示例,表11标识了示例性关联响应属性。在本示例中,属性列表中的属性长度是固定的。因此,设备操作可以容易地跳到适当的偏移,以读取在响应中的任意给定属性的值。偏移是指属性的开始。
               表11
 
Attribute(属性)    AttribID(属性ID) Length(长度) R/O Allowed Values(允许值)
SSID(偏移=x0013) 0x2001 32B R 长度在0和32字符之间的字符串,包括可打印的8位ASCII字符                        
SSID Length(SSID长度)(偏移=x0034) 0x2002 1B R 在0-32之间的整数值,以字节表示SSID属性的长度            
Network Key(网络密钥)(偏移=x0036) 0x2003 64B R 长度为5至64个8位ASCII字符的字符串。更多细节包括在第5.6.2节的Network Key attribute(网络密钥属性)描述中        
Network KeyLength     0x2004 1B R 在5-64之间的整数值,以字节表示Network Key attribute(网络密
 
(网络密钥长度)(偏移=x0077)  钥属性)的长度
Key ProvidedAutomatically(自动提供密钥)(802.1x)(偏移=x0079)  0x2005 1B R 0为否,1为是,必须与认证类型对应,更多细节见描述
NetworkAuthenticationType(网络认证类型)(偏移=x007B) 0x2006 2B R 这些标志禁止Network Auth type(网络认证类型)。每次仅设置一个标志。该响应是以下值之一:0x0001=Open0x0002=WPAPSK0x0004=Shared0x0008=WPA0x0010=WPA-NONE0x0020=WPA2所有其它的值被保留并应该被设置为0。                     
Data EncryptionType(数据加密类型)(偏移=x007E) 0x2007 2B R 这些标志禁止“Data EncryptionType(数据加密类型)”。每次仅设置一个标志。该响应是以下值之一:0x0001=WEP0x0002=TKIP0x0004=AES所有其它的值被保留并应该被设置为0。                     
Connection Type(连接类型)     0x2008 1B R 这些标志禁止“Connection type(连接类型)”。每次仅设置一个  
 
(偏移=x0081) 标志。该响应是以下值之一:0x01=ESS0x02=IBSS所有其它的值被保留并应该被设置为0。                     
SSID
如上所述,SSID是在广播无线网络中使用的字符串。
Network Key(网络密钥)
Network Key(网络密钥)是被用来保护网络的字符串。在本示例中,以下属性被设置为对Network Key(网络密钥)的允许值的约束。该设备必须准备接受或拒绝以下配置:
               表12
 
Network Auth Type(网络认证类型)  Data Auth Type(数据认证类型) Valid Network Key values(有效网络密钥值)   
WPA TKIP 0-63 ASCII字符,64 HEX字符
WPA AES 0-63 ASCII字符,64 HEX字符
Open WEP 5或13 ASCII字符,10或26 HEX字符
WEP密钥
当数据认证类型是WEP时,网络密钥是40位或104位WEP密钥的ASCII或HEX表示。
WPAPSK通行短语
如果网络密钥属性是是0-63字符型ASCII字符串,且“网络认证类型”属性是WPA,则网络密钥属性被用作导出WPA二进制密钥的通行短语。
Key Provided Automatically(自动提供密钥)(802.1x)
“Key Provided Automatically(自动提供密钥)(802.1x)”属性规定NetworkKey(网络密钥)是否经由801.x来提供。当WPA-PSK或者WEP用于保护无线网络时,它通常被设置为0。
Network Authentication Type(网络认证类型)
网络认证类型表示要求哪种类型的安全机制加入特定网络。标志集指定使用以下哪种机构:
0x0001=Open
0x0002=WPAPSK
0x0004=Shared
0x0008=WPA
0x0010=WPA-NONE
0x0020=WPA2
在本示例中,其它值被保留并设置为0。显然,与关联请求不同,这些标志是互斥的—在给定时间仅能设置一个标志。
Data Encryption Type(数据加密类型)
该值指定由无线网络使用的加密机制。该标志集指定使用以下哪种结构;
0x0001=WEP
0x0002=TKIP
0x0004=AES
所有其它的值被保留并被设置为0。显然,与关联请求不同,这些标志是互斥的—在给定时间仅设置一个标志。
Connection Type(连接类型)
连接类型定义了无线网络的类型,该标志集指定使用以下哪种机制:
0x01=ESS
0x02=IBSS
所有其它的值被保留并被设置为0。这些值是互斥的。
然后参照图7,示出了根据本发明的一个方面的关联驱动器系统700。该系统700包括驱动器710,驱动器包括可信介质通信组件720和驱动器通信组件730。
可信介质通信组件720经由可信介质(例如USB连接)与设备740接口。在一个示例中,可信介质通信组件720从设备740接收关联请求(例如,独立于设备列举的关联请求初始化时间)。在另一个示例中,可信介质通信组件720接收请求的通知来发出关联请求。此后,驱动器710生成经由驱动器通信组件730发送到关联管理器(未示出)的关联请求。
在一个示例中,驱动器710实现以下接口:
               表13
interface IPngDriver
{
          //Properties
          HRESULT Manager([in]IPngMgr*newVal);
          //Methods
          HRESULT Start();
          HRESULT Stop();
}
“Manager”是指向关联管理器的接口指针,使得驱动器可以调用SendAssociationRequest。当希望驱动器开始检测并发出新的关联请求时,由关联管理器调用Start()。当希望驱动器停止发出新的关联请求时,由关联管理器调用Stop()(例如当用户希望中止在特定可信介质上关联时)。
在一个示例中,特定驱动器710可与USB可信介质相关。在该示例中,期望采用非可信介质的设备通过驱动器710安全地发送关联请求并接收关联响应。
在一个示例中,对于实现动态关联的设备,其中关联请求可以与设备列举无关地生成,存在可选的Interrupt IN(中断IN)端点。该端点方便新关联请求的通知。在表14中可以查找到这种可选端点的标准端点描述符:
               表14
 
Offset(偏移) Field(字段) Size(大小) Value(值) Description(描述)
0 bLength 1 07h 该描述符的字节大小
1 bDescriptorType 1 05h ENDPOINT描述符类型
2 bEndpointAddress 1 81-8Fh 在USB设备上该端点的地址。该地址是在1和15之间的端点标号。位0..3端点标号位4..6保留,必须为0位71=In                       
3 bmAttributes 1 03h 这是中断端点
4 wMaxPacketSize 2 00??h 最大数据传送大小
6 bInterval 2 ??h 数据传送的轮询端点的间隔。以毫秒表示。必须在从1到255的范围内。推荐值是255。                   
如果设备的接口不包括可选端点,那么仅在列举时产生关联。如果这种设备希望初始化关联进程,就必须进行设备初始化USB重置。这会使该设备被主机重新列举,此时主机会从该设备检索关联请求。在另一个示例中,设备还可以实现HUB功能,以使关联功能如设备所希望的来和往。
由于对于支持关联接口的设备,控制端点是唯一的强制端点,因此在该端点发生必要的数据传送。在该示例中,这些传送是以关联类请求的形式。
表15描述了在一示例中必须由设备支持的关联类请求的列表。
               表15
 
Request(请求) Value(值) Section(部分)
GET_ASSOCIATION_INFORMATION 0x01 0
GET_ASSOCIATION_REQUEST 0x02 0
 
SET_ASSOCIATION_RESPONSE 0x03 0
GET_ASSOCIATION_INFORMATION
该请求从该设备检索关联信息结构,该关联信息包括REQUEST_INFO块列表。每个REQUEST_INFO块属于设备期望发出的单一关联请求:
               表16
bmRequestType           10100001B
bRequest                GET_ASSOCIATION_INFORMATION
wValue                  0x0000
wIndex                  接口
wLength                 所请求数据的长度
Data                    ASSOCIATION_INFORMATION
表17示出了示例性ASSOCIATION_INFORMATION结构:
               表17
 
Offset(偏移) Field(字段) Size(大小) Value(值) Description(描述)
0 PendingRequestCount              1 0x00-0xff 在该结构的末端所列出的挂起请求数        
1 Flags 2 参见表18 参见表18
3 RequestInfoArray Sizeof(REQUEST_INFO)*PendingRequestCount         0x000000-0xffffffff REQUEST_INFO结构的数组(见表19)
表18提供示例性Association Information Flag(关联信息标志)信息:
               表18
 
FlagName(标志名) Flag Value(标志值) Description(描述)
 
AdditionalRequests 0x0001 如果该标志被设置,它表示该设备可以具有在当前设置之后的挂起附加关联请求。在关联请求的当前设置被处理之后,对它进行设置造成主机发送另一个GET_ASSOCIATION_INFORMATION。对于具有明显次序关系或者发出请求作为特定响应结果的设备,它们是有用的。如果没有被设置,则表示主机不需要发布另一个GET_ASSOCIATION_INFORMATION请求。               
表19描述了典型的REQUEST_INFO结构:
               表19
 
Offset(偏移) Field(字段) Size(大小) Value(值) Description(描述)
0 RequestID 1 0x00-0xff 该字段标识特定的关联请求。该值用于检索请求并发送响应。      
1 RequestSize 4 0x00000000-0xffffffff 这是特定关联请求的字节大小。
GET_ASSOCIATION_REQUEST
该请求从设备检索特定的关联请求。该请求由wValue字段中的RequestID值标识:
               表20
bmRequestType       10100001B
bRequest            GET_ASSOCIATION_REQUEST
wValue              RequestID BlockNumber(请求ID块数)
wIndex              Interface(接口)
wLength             请求数据的长度
Data                Association Request(关联请求)
在该示例中,请求块是4KB的数据块。控制传送的最大传送大小是64KB,因此在每一个GET_ASSOCIATION_REQUEST中,理论上可以传送16个请求块。被传送的实际数据量是由wLength字段指定的。在wValue字段中指定的BlockNumber标识了该控制传送的起始块数。因此在本示例中,设备540应该为RequestID指定请求返回以偏移BlockNumber*4KB开始并传送wLength字节的关联请求数据。
SET_ASSOCIATION_RESPONSE
该请求发送对由wValue字段中的RequestID值标识的特定关联请求的响应:
               表21
bmRequestType      00100001B
bRequest           SET_ASSOCIATION_RESPONSE
wValue             RequestID TransferFlags(请求ID传送标志)
wIndex             Interface(接口)
wLength            响应数据的长度
Data               Association Response(关联响应)
在本示例中,TransferFlags值是在表22中查找的零个或多个值的位OR:
               表22
 
Flag Name(标志名) Flag Value(标志值) Description(描述)
LastBlock 0x01 如果该标志被设置,它表示这是包含该特定Association Response(关联响应)的数据的最后的控制传送。这有助于链接较大响应的控制传送。                                  
消息中的关联中断
NewAssociationRequest(新关联请求)
该中断IN消息向主机指示该设备具有需要被处理的新的或修改过的关联请求。在收到该消息后,主机可以发出GET_ASSOCIATION_INFORMATION请求,并相应地处理该请求。
               表23
 
Offset(偏移) Field(字段) Size(大小) Value(值) Description(描述)
0 bMessageType 1 50h 新的关联请求事件
1 bRequestCount 1 0x00-0xff 可以在随后的GET_ASSOCIATION_INFORMATION中被返回的挂起请求数。该字段是对主机确定需要分配多大缓冲器以接收该关联信息的提示。
应该理解,该系统100、设备110、关联管理器120、处理程序130、驱动器140、处理程序注册表150、驱动器注册表160、系统400、关联管理器410、管理器通信组件420、处理程序标识组件430、关联管理器510、初始化组件520、系统600、处理程序610、请求组件620、响应组件630、关联处理器640、服务650、系统700、驱动器710、可信介质通信组件720、驱动器通信组件730和/或设备740可以是如本文定义的术语的计算机组件。
简要参照图8-18,示出了可以根据本发明实现的方法。同时,为了说明简单,该方法被示为和描述为一系列框,应该理解和意识到,本发明不是先于框的次序,因为根据本发明,某些框可以采用与本文所示出和描述的不同次序和/或与其它框并发进行。此外,根据本发明,并不需要所有示出的框来实现该方法。
本发明可以在由一个或多个组件执行的诸如程序模块的计算机可执行指令的一般上下文中描述。通常,程序模块包括执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、数据结构等。通常,程序模块的功能可按各个实施方式中所需地结合或分布。
参照图8,示出了根据本发明的一个方面的对设备800进行关联的方法。在810,经由可信介质(例如UEB)建立连接(例如设备的连接)。在820,由例如该设备和/或关联驱动器发出关联请求。在830,(例如,从驱动器)接收与关联响应相关联的信息。该信息可以包括例如从关联管理器接收的关联响应。或者,该信息可以包括从关联管理器接收的关联响应的一部分。
在840,对该关联是否成功进行判定。如果在840的判定为否,则不进行进一步处理。如果在840的判定为是,在850,与关联响应相关联的信息用于经由非可信介质(例如无线连接)来连接(例如设备)。
之后参照图9,示出了根据本发明的有助于设备900的关联的方法。在910,接收与关联请求相关联的信息。在920,对是否收到该关联请求进行判定。如果在920的判定为否,则在930,生成关联请求,进程进行到940。如果在920的判定为是,则在940,向例如关联管理器发送所收到的关联请求。
在950,例如从关联管理器接收关联响应。在960,将与关联响应相关的信息被提供给请求设备。例如,该信息可以包括整个关联响应和/或关联响应的一部分。此后,不进行其它处理。
之后,参照图10-12,示出了根据本发明的一个方面的经由USB连接1000来对设备进行关联的方法。在1004,列举(enumerate)设备和/或发出新的关联请求。在1008,由例如驱动器将GET_ASSOCIATION_INFORMATION请求发送到该设备。在1012,例如由驱动器来确定总的关联信息的大小(例如,size=3+sizeof(REQUEST_INFO)*PendingRequestCount)。
在1016,对是否例如驱动器已基本上接收到了全部关联信息进行判定。如果在1016的判定为否,那么处理进行到1008。如果在1016的判定为是,则在1020,判定PendingRequestCount是否大于零。如果在1020的判定为否,那么就不进行其它处理。
如果在1020的判定为是,则在1024,请求被标识以供(例如由驱动器)处理。在1028,确定传送(例如关联请求)的大小。在1032,发送GET_ASSOCIATION_REQUEST。在1036,对是否存在多个请求数据进行判定。如果在1036的判定为是,则处理继续到1028。如果在1036的判定是否,则在1040,(例如,由关联管理器和/或处理程序)处理关联请求并生成关联响应。
在1040,确定关联响应传送的大小。在1048,发送SET_ASSOCIATION_RESPONSE。在1052,对是否存在多个响应数据进行判定。如果在1052的判定为是,则该处理继续到1044。如果在1052的判定为否,则在1056,对是否存在多个请求进行判定。
如果在1056的判定为是,则处理继续到1024。如果在1056的判定为否,则在1060,对附加请求标志是否在关联信息中已被发送。如果在1060的判定为是,则处理继续到1008。如果在1060的判定为否,则不进行其它的处理。
之后参照图13,示出了根据本发明的一个方面的关联管理方法1300。在1310,例如从驱动器接收关联请求。在1320,标识了关联请求的处理程序。在1340,判定对于该关联请求是否存在处理程序。如果在1340的判定为否,则在1350,生成关联响应的错误,且处理继续到1360。
如果在1340的判定为是,则在1370,与关联请求相关联的信息被发送到处理程序。例如,该信息可以包括该关联请求和/或该关联请求的一部分(例如属性列表)。
在1380,从处理程序接收与关联响应相关联的信息。在1360,向请求驱动器提供关联响应。
参照图14-16,示出了根据本发明的一个方面的关联管理方法1400。在1404,例如从驱动器接收关联请求。在1408,验证该关联请求。在1412,对该关联请求是否是良好形成的进行判定。如果在1412的判定为否,则在1416,生成指示残缺的关联请求的关联响应,且处理继续到1420。
如果在1412的判定为是,则在1424,定位关联请求的处理程序。在1428,对是否已经找到处理单元进行判定。如果在1428的判定为否,则在1432,生成指示关联类型未得到支持的关联响应,且处理进行到1420.
如果在1428的判定为是,则在1436,解析该关联请求并创建属性列表。在1440,将属性列表发送到所标识的处理程序。在1444,从处理程序接收响应信息。在1448,对该关联是否成功进行判定。如果在1448的判定为否,则在1452,生成指示适当错误状态的关联响应且处理继续到1420。
如果在1448的判定为是,则在1456,验证响应格式。在1460,对该响应是否是良好形成的进行判定。如果在1460的判定为否,则在1464,生成指示适当错误状态的关联响应,且处理继续到1420。
如果在1460的判定为是,则在1468,基于来自处理程序的响应来生成关联响应。在1420,将关联响应提供给请求驱动器,且不进行其它处理。
参照图17,示出了根据本发明的一个方面的关联处理程序方法1700。在1710,例如由关联管理器接收与关联请求相关的信息(例如属性列表)。在1720,处理关联请求。在1730,将响应信息提供给关联管理器。
为了为本发明各个方面提供附加上下文,图18和以下描述旨在提供其中可以实现本发明的各个方面的适当操作环境1810的简要、一般描述。虽然在由一个或多个计算机或其它设备执行的诸如程序模块的计算机可执行指令的一般上下文中对本发明进行描述,但是本领域技术人员会认识到,本发明还可以结合其它程序模块实现和/或实现为硬件和软件的结合。然而,通常,程序模块包括执行特定任务或实现特定的数据类型的例程、程序、对象、组件、数据结构等。操作环境1810仅为适当操作环境的一个示例,并非旨在对本发明的应用范围和功能性进行任何限制。适用于本发明的其它公知计算机系统、环境和/或配置包括,但不限于:个人计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子设备、网络PC、小型计算机、大型计算机、包括以上系统或设备的分布式计算环境等。
参照图18,实现本发明各个方面的示例性环境1810包括计算机1812。计算机1812包括处理单元1814、系统存储器1816和系统总线1818。系统总线1818将包括但不限于系统存储器1816的系统组件连接到处理单元1814。处理单元1814可以是各种可用处理器中任一种。双微处理器和其它多处理器架构也可用作处理单元1814。
系统总线1818可以是包括存储总线或存储控制器、外围总线或外部总线,和/或局部总线的若干类型总线结构中任一种,局部总线可使用包括但不限于8位总线、工业标准架构(ISA)、微信道架构(MSA)、扩展ISA(EISA)、智能驱动电子设备(IDE)、VESA局部总线(VLB)、外围组件互连(PCI)、通用串行总线(USB)、加速图形端口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)和小型计算机系统接口(SCSI)的任意各种可用总线架构。
系统存储器1816包括易失性存储器1820和非易失性存储器1822。包含例如在启动过程中在计算机1812内的元件之间传递信息的基本例程的基本输入/输出系统(BIOS)存储在非易失性存储器1822中。作为示例而非限制,非易失性存储器1822可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦ROM(EEPROM)、或闪存。易失性存储器1820包括充当外部高速缓冲存储器的随机存取存储器(RAM)。作为示例而非限制,RAM可使用许多形式,例如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据率SDRAM(DDR SDRAM)、加强SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)和直接型Rambus RAM(DRRAM)。
计算机1812还包括可移动/不可移动、易失性/非易失性计算机存储介质。图18示出了例如磁盘存储器1824。磁盘存储器1824包括但不限于,类似磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡或存储棒的设备。另外,磁盘存储器1824可以包括独立于其它存储介质或者与其结合的存储介质,包括但不限于,例如压缩盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可再写驱动器(CD-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)的光盘驱动器。为了方便磁盘存储设备1824连接到系统总线1818,可移动或不可移动接口通常可用作例如接口1826。
应该理解,图18描述了一种在用户与适当操作环境1810中所述的基本计算机资源之间充当中间介质的软件。这种软件包括操作系统1828。可存储在磁盘存储器1824上的操作系统1828用于控制和分配计算机系统1812的资源。系统应用程序1830通过存储在系统存储器1816或盘存储器1824上的程序模块1832和程序数据1834,利用操作系统1828对资源的管理。应该理解,本发明可以利用各种操作系统或操作系统的组合来实现。
用户通过输入设备1836向计算机1812输入指令或信息。输入设备1836包括但不限于:例如鼠标、跟踪球、输入笔、触摸板的定点设备、键盘、麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、TV调谐卡、数码相机、数码摄像机、网络相机等。这些和其它的输入设备经由接口端口1838通过系统总线1818连接到处理单元1814。接口端口1838包括例如串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备1840利用某种与输入设备1836相同类型的端口。因此,例如,USB端口可用于向计算机1812提供输入,从计算机1812向输出设备1840提供输出信息。提供输出适配器1842来示出在需要特定适配器的其它输出设备1840中,存在诸如监视器、扬声器和打印机的某些输出设备1840。作为示例而非限制,输出适配器1842包括在输出设备1840和系统总线1818之间提供连接装置的视频卡和声卡。应该注意,其它设备和/或设备的系统提供了输入和输出两种能力,例如远程计算机1844。
计算机1812可以在使用到一个或多个例如远程计算机1844的远程计算机的逻辑连接的网络环境中操作。远程计算机1844可以是个人计算机、服务器、路由器、网络PC、工作站、基于仪器的微处理器、对等设备或其它公共网络节点等,且通常包括相关于计算机1812所述的元件中的多个或全部。简洁起见,对远程计算机1844仅示出存储器存储设备1846。远程计算机1844通过网络接口1848逻辑连接到计算机1812,然后,经由通信连接1850物理连接。网络接口1848支持例如局域网(LAN)和广域网(WAN)的通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜缆分布式数据接口(CDDI)、以太网/IEEE802.3、令牌网/IEEE802.5等。WAN技术包括但不限于点对点链接、诸如综合服务数字网(ISDN)及其变型等的电路交换网络、分组交换网络,以及数字用户线路(DSL)。
通信连接1850是指用来将网络接口1848连接到总线1818的硬件/软件。虽然为了说明清楚,在计算机1812中示出了通信连接1850,但是它还可以在计算机1812外部。仅为示例性目的,连接到网络接口1848所必须的硬件/软件包括内部和外部技术,例如包括正规电话等级调制解调器、电缆调制解调器和DSL调制解调器的调制解调器、ISDN适配器和以太网卡。
在一个示例性示例中,可扩展接口可实现为包括无线通用串行总线(WUSB)支持的即插即走(Plug and Go)(PONG)架构。图19示出了PONG系统1900的示例。管理器1905是配置成帮助向正确对方传送数据的中央组件。管理器1905可以将驱动器数据(诸如dll)加载到进程中。例如,管理器1905可基于驱动器注册来记载驱动器数据。当管理器1905从驱动器接收请求块时,它可以查看请求块的报头并为该请求类型加载合适的处理程序。处理程序或驱动器可在系统启动时加载。向处理程序提供该请求块以供处理。一旦处理程序完成,请求块通过管理器1905返回到驱动器。
驱动器1920-1922负责与某些形式的硬件或另一软件组件接口。驱动器1920-1922负责将请求从管理器1905通过可信介质引导到设备。
驱动器1920-1922中的每个可以检测何时新的请求应该被发出,且可以检索或生成请求。这个请求被传送到管理器1905,管理器稍后返回响应到驱动器。
多处理程序可以使用相同的驱动器(即多目标介质可以使用相同的可信介质)。驱动器1920-1922可以不需要知道请求块或响应块细节。
处理程序1910-1912负责与实现设备安装/关联的服务接口。处理程序1910-1912可以直接与目标介质相关,且可以是明确知道该特定目标介质的请求块中属性的唯一组件。存在也可由其它组件使用的全局属性。
处理程序1910-1912可以被配置成处理任意类型的目标介质,例如无线介质。如图19所示,处理程序1912被配置成处理WUSB介质。WUSB是由USB实现者论坛(USB-IF)为连接无线USB外部设备到无线USB主机而定义的无线协议。WUSB协议被指定在超宽带(UWB)的顶层上的多频带OFDM联合(MBOA)介质访问控制(MAC)层上工作。当处理程序1910-1912中任一个从管理器1905接收请求块时,处理程序将解析该内容以确定合适的动作。
PONG系统1900使设备发送包括与WUSB相关联属性的请求和响应。对于从设备传送到处理程序的请求,属性列表可以包括关联类型、连接设备ID、连接密钥、设备设置类GUID、支持的频带组、综合站(integrator site)URL等。关联类型是包括在请求和响应的报头部分中的属性,并与数据属性分开。关联类型属性由管理器用来转发该请求到正确的处理程序。表24示出了关联类型属性的示例规范。
               表24
 
Attribute name(属性名):    AttributeID(属性ID):  Length(长度) M/O Allowed Values(允许值)
Association type(关联类型)      0x0000 16B M 59ACFDCB-153E-41ef-8111-FA19CFE42B1E              
表24中的术语和下表被定义为:
Attribute name(属性名):与属性元素相关联的友好名。
AttributeID(属性ID):该数字被用来标识在属性列表中的属性元素。
Length(长度):在属性元素中的数据长度。属性长度可以是变化的或固定的,并以字节表示。长度值还可以指定最大长度。在响应中,使用固定长度使得对该值的偏移是确定的,有助于设备解析该响应的能力。属性的实际值可以不用尽分配给数据的整个长度。这样,附加字段指定属性数据的实际长度。
M/O:该字段表示变量是强制的或可选的。强制属性元素总是被包括在属性列表中。可选值不必要出现。“强制”和“可选”由M或O来表示。
Allowed Values(允许值):允许值字段描述了由设备支持的值。如果要求允许值,则表示如果它被包括在属性列表中那么设备支持该值。除非在表中另有说明,否则假定该值是被要求的。如果允许值是可选的,那么设备不需要支持该值,但是应该为将其包括在属性列表中做准备。可选值可能在本规范的以后版本中要求。
请求的数据部分可以包括指定给属性类型的属性。表25示出了可以被转发给WUSB处理程序的示例请求属性:
               表25
 
属性名: 属性ID: 长度 M/O 允许值
Connection Device ID(连接设备ID)(CDID) 0x1000 16B O 128位唯一设备ID。该ID唯一地向主机标识该设备。如果属性缺失,或者该值全为0,那么DeviceID就会由主机在Association Response(关联响应)中提供。                     
Connection Key(连接密钥)(CK) 0x1001 16B O 128位密钥,用来建立重新连接。如果这个属性缺失,或者该值全为0,则Connection Key会由主机在Association Response(关联响应)中提供。                
Device Setup ClassGUID(设备设置类GUID) 0x1002 16B O 这个GUID表示设备类,以inf来使用。                 
Supported Band Groups(支持的频带组)      0x1003 2B O 2字节位掩码,报告哪个UWB频带组是由该设备支持的。
Integrator Site(综合站URL)    0x1004 Variable变量    O 指向特定位置的URL,包括在USB-IF认证的设备综合列表中的设备细节。              
Connection Device ID(连接设备ID)(CDID)是无线USB设备的设备ID。如果该设备先前已分配了设备ID(无论是从制造商、先前关联尝试、用户输入等),则期望使用同一ID。通过重新利用现有ID,主机可以通过得知以前发现国该设备而有不同的表现。这对于设备而言也会更容易同时与多个主机关联。例如,如果该设备希望在多个主机保留同一CDID或者指示它已与该主机相关联,则CDID可以由该设备发送。该主机可以重写这个值,或者它也可以重新使用该值。
如果这个属性缺失了,或者该值全为0,那么主机将假定该设备要求新的设备ID。主机会生成这个唯一的ID,且将其在关联响应中返回到设备。
Connection Key(连接密钥)(CK)是一种被用来帮助相互认证并生成如WUSB规范中所述的会话加密密钥的密钥。如果该设备需要具有硬编码连接密钥,则CK可以由该设备发送。如果它没有能力存储生成的密钥(不是NVRAM),则设备希望是在请求中包括这个属性。然而不推荐的是设备硬编码这些密钥,相反为了更安全,应该允许主机动态生成它们。
如果这个属性缺失,或者该值全为0,那么主机将假定该设备要求生成CK,并将CK在关联响应中返回。
Device Setup Class(设备设置类)GUID是所支持的设置类GUID之一。在关联请求中提供这个值允许为该设备显示合适的图标,或者实现某种系统或用户定义的策略。该值可用于确定正在关联的设备类型。GUID可用于匹配在主机上已安装的设备设置类,以确定例如图标、描述符等。这也有助于在任意UI中显示适当信息,以帮助用户识别特定设备。
Supported Band Groups(支持的频带组)可用于确定当选择频道时,主机无线电(host radio)应该选择哪个频道。例如,Supported Band Groups(支持的频带组)可以由主机用来确定它可以使用哪个PHY频道。如果没有来自设备的该信息,则主机需要改变在频带组1中的频道,由于它是要求由所有设备支持的唯一的频带组。这会导致所有的主机和设备选择使用频带组1,因此会拥堵频道,并缩小其它频带组的值。如果这个信息在关联时间传递到主机,则主机将得知可能连接到该主机的所有设备的支持频道,从而使主机有可能在其它频带组中选择频道。
位位置上的1表示在关联PHY频带组中的所有频带和频道都被支持。在位位置0上的1表示在频带组1中的所有频带被支持。
Integrator Site(综合站)URL可以用在UI中,以通过提供到USB-IF网站上的设备细节的链接来向用户提供有关该设备的信息。
表26示出了可转发到WUSB设备的示例性响应属性。在表中示出了示例偏移。而且,报头属性占据属性列表的前19字节。
               表26
 
属性名: 属性ID: 长度 M/O 允许值
Connection Host ID(连接主机ID)(CHID)(偏移=0x13)     0x2000 16B M 128位唯一主机ID。这个ID唯一地向设备标识主机。
Connection Device ID(连接设备ID)(CDID)(偏移=0x23)       0x1000 16B M 128位唯一设备ID。这个ID唯一地向主机标识设备。如果该设备在关联请求中指定该属性,则该值相同。                          
Connection Key(连接密钥)(CK)(偏移=0x33)   0x1001 16B M 128位密钥,用来建立重新连接。如果该设备在关联请求中指定该属性,则该值相同。           
Preferred Channels(优选频道) 0x2001 16B O 这表示当选择频道时,主机会使用的频道选择优先权。通过该信息,当查找主机时,设备可以改变频道扫描的顺序,以通过首先扫描优选频道来最小化搜索时间。        
Host Region(主机区域) 0x2002 16B0    O 来自主机的指示,通知设备其工作在哪个区域。如果不同的国家或区域在设备上针对功率、范围、频率等指定不同的操作约束,则这就是必要的。                      
对于从处理程序传送到设备响应,属性列表可以包括连接主机ID、连接设备ID、连接密钥、优选频道、主机区域等。连接主机ID(CHID)是唯一的主机ID。该设备可以使用这个ID来定位主机信标,由此定位主机。连接设备ID(CDID)是唯一的设备ID。这个ID向由CHID指定的主机唯一地标识设备。并不能保证它在多个主机上是唯一的。连接密钥(CK)用于利用该上下文来建立重新连接。CK可以是128位CCM密钥。
优选频道可以在主机响应中指定,来向该设备通知主机使用的优选的频道次序。这可以通过向设备给出相关于主机有可能位于的任意给定频道的似然性的提示,来优化搜索主机的进程。该设备可以按照主机指定的次序来搜索主机,因此设备更有可能在首先扫描的几个频道之一上发现主机,而不是按照线性次序扫描。
主机区域可以在主机响应中指定,以向设备通知有关其操作所在的区域。该设备可以使用该信息来改变其无线电操作属性到区域专用值。
在一个示例中,属性列表中的属性长度可以是固定的。因此,设备操作可以很容易跳到合适的偏移,来读取响应中的任意给定属性的值。偏移是指属性的开始。
其它的属性可用于在设备和处理程序之间的请求和响应。这些其它的属性可以包括硬件和兼容ID、频道ID、频带组、设备制造商字符串、设备描述字符串、主机字符串、设备类GUID、制造商URL、设备图标、关联密钥等。关联密钥是写入设备的PONG专用密钥。该设通常不会揭示该关联密钥,除非是通过PONG。下次该设备附连时,对关联密钥进行检索并用来认证该设备。关联密钥的使用能够执行任务,例如静默更新关联信息而无需询问用户、允许该设备保留其CDID等。在不使用关联密钥的情况下,对于两个具有相同CDID的设备(例如,从另一个主机获得,从另一个设备窃取等)有可能影响设备连接到PC的能力。
以下是可以利用上述的架构和WUSB连接机制实现的两个示例情况:
情况1—WUSB便携式播放器与PC:
Todd得到了一个新的有线+无线的USB便携式播放器,它与WindowsMedia Player同步工作。打开盒子,他拿走了播放器,并将所包括的可充电电池放到播放器中。然后,他按照指令安装了第三方软件,并利用有线USB缆线将该播放器附连到PC以给电池充电。当对电池充电时,播放器也连接到PC用于无线USB连接性,并且甚至通过有线USB初始化设备同步。
一旦拔下缆线,且该设备在范围内,用户不会看见任何无线USB设备检测的新对话框,且该设备刚好开始工作。
情况2—蜂窝电话和存储与PC:
Jack具有预先关联了的PC和WUSB存储设备。当Jack将他的WUSB蜂窝电话与PC关联时,他可以选择同样将其它WUSB设备(可以是1个可用连接槽)与蜂窝电话关联。这增加了PC的价值并简化了终端用户的连接体验。
为了说明目的,以下包括了关联WUSB设备的4个示例关联模型:
UI方法—利用在系统上的连接按钮(一旦设备就在附近),并从附近的可成对设备的UI列表中标识该设备。
串行#方法—这与UI方法很相似,但是一旦用户已从UI标识了该设备,则用户需要向主机输入来自设备的序列号,以保证安全。
USB缆线方法—使用一般的USB缆线,将无线USB设备插入到期望关联的主机中。该缆线可用于常规操作或与关联一起充电。
USB闪存密钥—使用一般的USB海量存储设备(例如USB闪存设备)来存储和在设备和主机之间交换标识和安全信息。
在图19中示出的PONG系统1900可以被具体配置成支持USB。图20示出了用于操作系统的设备管理架构的示例USB驱动器栈2000。驱动栈2000可以被实现成支持USB作为PONG系统1900中的可信介质。组件2013-2017是操作系统中的现有USB栈。组件2010是PONG USB驱动器的核心组件。组件2006是由整个PONG管理器1905封装的用户模式PONG驱动器。
图21示出了将WUSB设备2112连接到主机设备2100的示例操作。连接WUSB设备2112可以是能够使用WUSB通信的任何设备。通常,连接WUSB设备2112还能够使用可信介质通信。如上所述,可信介质可以包括有线连接,例如有线USB,串行、并行、火线、以太网等。可信介质还可以包括无线连接,例如近场通信(NFC)、红外线(IR),或其它所建立的无线连接。主机设备2100包括如上结合图19描述的管理器1905、WUSB处理程序1912和驱动器1912。如图21所示,主机设备2100还包括使用WUSB来连接外部设备的WUSB组件2103,以及使用有线连接来连接到设备的有线组件2105。
为了连接到主机设备2100,连接WUSB设备通过有线组件2105向驱动器1912发送请求。例如,连接WUSB设备2112可以通过有线USB缆线连接到有线组件2105。该请求包括用于将WUSB设备2112与主机设备2100关联的信息,例如上述的属性。
驱动器1912向管理器1905发送请求,管理器解析并验证请求中的信息。特别地,管理器1905可以确定请求中的连接类型以及请求中的信息对于与连接相关的标准是否是有效的。在该示例中,管理器1905确定该请求与WUSB连接相关联。管理器1905验证请求中的设备属性。如果请求有效,则管理器1905向WUSB处理程序1912提供WUSB连接信息,例如设备属性。
WUSB处理程序1912处理连接信息并响应与该请求向管理器1905提供主机连接信息。主机连接信息包括用于使用WUSB连接的连接属性。管理器1905将具有连接属性的主机连接信息提供给驱动器1921,该驱动器通过有线组件2105将该连接信息发送到连接WUSB设备2112。然后,连接WUSB设备2112使用连接信息来自配置并连接到主机设备2100。例如,连接WUSB设备2112可以将WUSB组件调整成主机设备2100所要求的配置,例如频道、区域等。连接WUSB设备2112还可以通过在收到的连接信息中标识的密钥、主机ID和设备ID来向主机设备2100发送信息。
图22示出了用于本文所述系统将WUSB设备与主机设备连接的示例进程2200。例如,进程2200可以由管理器1902实现。在框2202,标识来自WUSB设备的关联请求。关联请求可以通过例如有线介质的可信介质接收。在框2204,解析该请求并确认内容。解析请求允许确定包括在请求中的关联类型。基于对应于类型的标准来确认该请求。在该示例中,关联的类型是WUSB,且针对WUSB标准来确认该请求。经确认的请求应该包括由WUSB标准指定的设备属性。
在框2206,WUSB设备属性被发送到WUSB处理程序。在框2208,从WUSB处理程序接收连接属性。连接属性使WUSB设备能够连接到主机设备。在框2210,连接属性通过可信介质发送到WUSB设备。
以下A-C节是针对在USB可信介质上由PONG系统使用的协议,并示出了在PONG目标设备上通过USB实现PONG所需的各种接口和端点描述符的部署。
A.PONG DEVICE INTERFACE(PONG设备接口)
表27是接口描述符的表示,并提供了通过USB对于PONG设备待填充数值的细节。对于大多数行,提供了特定的数值或数值集。用户可以从指定的范围中选择,且可保留所有其它的值以供以后使用。
               表27
 
偏移 字段 大小 描述
0 bLength 1 07h 该描述符的字节大小
1 bDescriptorType 1 04h INTERFACE(接口)描述符类型
2 bInterfaceNumber 1 ??h 标识索引号的基于零的值。
3 bAlternateSetting 1 00h 改变设置不是必须的。
4 bNumEndpoints 1 00h或01h 所使用的端点数(包括端点零)。如果不要求可选的中断端点,则使用00h,否则使用01h。             
5 bInterfaceClass 1 ffh 请使用ffh来将该接口标识为用户专用。使用Microsoft OS Descriptor(微软操作系统描述符)来标识PONG接口的Microsoft类代码。        
6 bInterfaceSubClass 1 00h 类代码被设置为0xff时必须使用00h值                             
7 bInterfaceProtocol 1 00h 类代码被设置为0xff时必须使用00h值                             
8 iInterface 1 00h 描述该接口的字符串描述符的索引。
字符串可用于标识关联的设备。字符串可以位于USB字符串描述符中。好的字符串的示例是“PONG-无线USB鼠标”。在一个示例实施例中,PONG接口没有与Interface Association Descriptor(接口关联描述符)组合。USB设备可以不被配置为每个配置具有一个以上的PONG接口。
B.PONG DEVICE ENDPOINTS(PONG设备端点)
为了允许真正便宜的设备,可使用控制端点,且中断端点是可选的(用于高级特征)。使用控制端点还允许低速USB设备。控制端点(端点0x00)不需要在接口描述符下描述,并且必须在所有USB设备上出现。
智能设备可以选择在完成设备列举后实现关联功能。为此,设备可以实现可选的中断IN端点。该端点将有助于新关联请求的通知。对于此可选端点的标准端点描述符的示例在图28中被示为中断-IN端点描述符。
               表28
 
偏移 字段 大小 描述
0 bLength 1 07h 该描述符的字节大小
1 bDescriptorType 1 05h ENDPOINT(端点)描述符类型
2 bEndpointAddress 1 81-8Fh 该端点在USB设备上的地址。该地址是在1和15之间的端点标号。位0..3端点标号位4..6保留,必须为0位71=In                       
3 bmAttributes 1 03h 这是中断端点
4 wMaxPackerSize 2 00??h 最大数据传送大小
6 bInterval 2 ??h 数据传送的轮询端点间隔。以毫秒表示。必须在1到255的范围内。推荐值是255。                         
如果设备的PONG接口不包括可选端点,那么仅在列举期间发生关联。如果这种设备希望初始化关联进程,则必须进行设备初始化USB重置。这会使设备被主机重新列举,此时主机会从该设备检索关联请求。设备还可以实现HUB功能以使该设备来往。
C.PONG CLASS SPECIFIC REQUESTS(PONG类专用请求)
所有的PONG数据传送都在控制端点上发生。这些传送可以是采用PONG类请求的形式。表29示出了由PONG设备支持的PONG类请求的列表。示出了bRequest的Calid值。
        表29
 
请求 节节
GET_ASSOCIATION_INFORMATION 0x01 C.1.
GET_ASSOCIATION_REQUEST 0x02 C.2.
SET_ASSOCIATION_RESPONSE 0x03 C.3.
C.1.GET_ASSOCIATION_INFORMATION
该请求从设备检索association_information(关联信息)结构。该association_information包括REQUEST_INFO块的列表。每个REQUEST_INFO块属于设备期望发出的单一关联请求。表30示出了示例性的GET_ASSOCIATION_INFORMATION请求。
               表30
 
bmRequestType        bRequest wValue wIndex wLength Data
10100001B GET_ASSOCIATION_INFORMATION     0x0000 Interface(接口)    请求数据的长度     ASSOCIATION_INFORMATION       
表31描述了示例ASSOCIATION_INFORMATION数据结构。数据结构的前几个字节(例如3个字节)可以是报头部分。
               表31
 
偏移 字段 大小 描述
0 PendingRequestCount    1 0x00-0xff 在该结构的末端所列出的挂起请求数        
1 Flags 2 见表32 见表32
3 RequestInfoArray       Sizeof(REQUEST_INFO)*PendingRequestCount 0x000000-0xffffffff REQUEST_INFO结构的数组(见表33) 
表32示出了示例association_informationflags(关联信息标志)。
               表32
 
标志名 标志值 描述
AdditionalRequests 0x0001 如果该标志被设置,它表示该设备可以具有在当前设置之后挂起的附加关联请求。在关联请求的当前设置已经被处理之后,对它进行设置会造成主机发送另一GET_ASSOCIATION_INFORMATION。对于具有明确次序关系或者发布请求作为特定响应结果的设备,它们是有用的。如果没有被设置,则它向主机指示不需要发送另一个GET_ASSOCIATION_INFORMATION请求。                   
表33示出了典型的request_info结构。
               表33
 
偏移 字段 大小 描述
0 RequestID 1 0x00-0xff 该字段标识特定的关联请求。该值用于检索请求并发送响应。                      
1 RequestSize 4 0x00000000-0xffffffff 这是特定关联请求的字节大小。
C.2.GET_ASSOCIATION_REQUEST
该请求从设备检索特定的关联请求。该请求由wValue字段中的RequestID值标识。表34示出了示例GET_ASSOCIATION_REQUEST请求。
               表34
 
bmRequestType        bRequest wValue wIndex wLength Data
10100001B GET_ASSOCIATION_REQUEST    RequestIDBlockNumber Interface(接口)    请求数据的长度   关联请求
请求块可以是4KB的数据块。控制传送的最大传送大小可被设置为64KB。因此,理论上可在每一个GET_ASSOCIATION_REQUEST中传送16个请求块。待传送的实际数据量是由wLength字段指定的。在wValue字段中指定的BlockNumber标识了这个控制传送的起始块数。设备可以对RequestID指定的请求返回从偏移BlockNumber*4KB开始并传送wLength字节的关联请求数据。
C.3.SET_ASSOCIATION_RESPONSE
该请求发送对wValue字段中的RequestID值标识的特定关联请求的响应。表35示出了示例SET_ASSOCIATION_RESPONSE。
               表35
 
bmRequestType      bRequest wValue wIndex wLength Data
00100001B SET_ASSOCIATION_RESPONSE    RequestIDTransferFlags Interface接口      响应数据的长度   AssociationResponse关联响应   
TransferFlags(传送标志)值是零个或多个值的位OR。表36中示出了示例TransferFlags值。
               表36
 
Flag Name(标志名) Flag Value(标志值) Description(描述)
LastBlock 0x01 如果该标志被设置,它表示这是包含该特定关联响应的数据的最后的控制传送。这有助于链接较大响应的控制传送。                                          
PONG系统可以实现中断IN消息。例如,NewAssociationRequest(新关联请求)是中断IN消息,可用于向主机指示该设备具有需要被处理的新的或修改过的关联请求。在收到该消息时,主机可以发出GET_ASSOCIATION_INFORMATION请求,并相应地处理该请求。表37示出了示例NewAssociationRequest。
               表37
 
偏移 字段 大小 描述
0 bMessageType 1 50h 新的关联请求事件
1 bRequestCount 1 0x00-0xf 可以在随后的
 
f GET_ASSOCIATION_INFORMATION中返回的挂起请求数。该字段实际上是对主机确定需要分配多大的缓冲器以接收该关联信息的提示。                      
图23示出了用于使用本文所述的特定数据结构来关联设备的示例进程2300。示例进程2300可以在例如PONG系统的可扩展架构中实现,,用于HOST通过USB配置设备。进程2300可以结合上述的请求和响应来实现。
在框2304,发送GET_ASSOCIATION_INFORMATION。在一种实现中,请求包括至少3字节的数据。在框2306,确定总的关联信息的大小。该大小由下式确定:
Size(大小)=3+sizeof(REQUEST_INFO)*PendingRequestCount
在判定框2308,对是否已收到全部关联信息进行判定。如果否,则进程2300返回到框2304。如果已收到全部关联请求,进程2300进行到判定框2310,其中对是否有任何的挂起请求进行判定。例如,可以通过确定PendingRequestCount数据结构是否大于0来进行判定。如果没有挂起请求(例如,PendingRequestCount=0),进程2300结束。如果有挂起请求,则进程2300进行到框2312,其中该进程选择请求来处理。
在框2314,确定传送的大小。这个大小由下式确定:
Size(大小)=max(bytes left,N*4KB(其中0<N<=16))
在框2316,以适当数据量发送GET_ASSOCIATION_REQUEST。RequestID应该与关联信息中的匹配。BlockNumber应该是要返回的起始框数。在判定框2318,对是否有更多的请求数据进行判定。如果是,进程2300返回到框2314。如果否,则进程进行到框2320,其中处理关联请求并生成响应。
在框2322,确定响应传送的大小。在框2324,以适当数据量发送GET_ASSOCIATION_RESPONSE。RequestID应该与该请求的匹配。如果该传送包括响应的最后字节,则应该设置LastBlock。在判定框2326,对是否有更多的数据进行判定。如果是,则进程2300回到框2322。如果没有更多的数据,则进程继续到判定框2328,其中对是否有更多的请求进行判定。如果是,则进程2300回到框2312。如果没有更多的请求,进程进行到判定框2330,其中对在关联信息中是否设置了AdditionalRequests flags(附加请求标志)进行判定。如果是,则进程2300回到框2304。如果没有设置该标志,则进程结束。
支持PONG接口的设备有可能在设备列举时实际上没有准备好发送PONG关联请求。例如,可能该设备实际上是在某些专有接口上支持PONG的其它设备的某种类型的托架(cradle)。USB PONG设备在目标设备被插入到托架中之前已经被列举。上述系统和技术提供了一种机制来通知PONG驱动器它需要检索新的关联信息。
可能还需要支持多关联请求的特定设备(例如具有多目标介质的设备)。这些独立的关联请求可以是相互依赖,或者是完全独立的。独立关联是其中设备希望一次关联多个目标介质而不考虑关联目标介质的次序。上述系统和技术支持在从主机接收关联响应之后,设备决定发出新的关联请求作为响应结果的情况。
以上描述包括所述本发明的示例。当然,不可能为了描述本发明而描述每一个可预期的组件或方法的组合,但是本领域普通技术人员可以意识到,本发明的许多其它的组合和变化也是有可能的。因此,本发明旨在涵盖落入所附的权利要求的精神和范围之内的所有这样的改变、更改和变化。此外,对于详细说明和权利要求中使用的术语“包括”的范围,这种术语旨在以与术语“包括”类似的方式表示包括性,如同作为权利要求中的传统词汇使用时“包括”所解读的一样。

Claims (18)

1.一种或多种编码有执行以下步骤的设备可执行指令的设备可读介质,所述步骤包括:
标识通过可信介质来自无线通用串行总线(WUSB)设备的关联请求;
解析所述关联请求;
生成描述所述WUSB设备的设备属性;
向WUSB设备的处理程序发送所述设备属性;
从所述处理程序接收连接属性;以及
通过所述可信介质将所述连接属性发送到所述WUSB设备。
2.如权利要求1所述的一种或多种设备可读介质,还包括:
标识包括在所述关联请求中的关联类型标识符;
判定所请求的关联类型是WUSB;以及
基于所述类型标识处理程序。
3.如权利要求1所述的一种或多种设备可读介质,还包括基于与WUSB相关联的标准确认所解析的关联请求。
4.如权利要求1所述的一种或多种设备可读介质,还包括根据所述连接属性使WUSB设备能够通过无线介质连接。
5.如权利要求1所述的一种或多种设备可读介质,其特征在于,所述可信介质是有线介质。
6.如权利要求1所述的一种或多种设备可读介质,其特征在于,所述可信介质包括有线USB连接、火线连接、以太网连接、串行连接、并行连接、无线连接、近场通信(NFC)连接、或红外(IR)连接中至少一个。
7.如权利要求1所述的一种或多种设备可读介质,其特征在于,所述设备属性包括关联类型标识符、连接设备标识符、连接密钥标识符、设备设置类GUID、所支持的频带组、或综合站URL中至少一个。
8.如权利要求1所述的一种或多种设备可读介质,其特征在于,所述连接属性包括连接主机标识符、连接设备标识符、连接密钥标识符、优选频道、或主机区域中至少一个。
9.一种包括无线通用串行总线(WUSB)组件的连接设备,所述连接设备被配置成通过可信介质将关联请求发送到主机设备,所述关联请求包括与所述连接设备相关的设备属性,所述连接设备还被配置成从所述主机设备接收连接属性并使用所述连接属性与所述主机设备建立WUSB连接。
10.如权利要求9所述的连接设备,其特征在于所述可信介质是有线连接。
11.如权利要求10所述的连接设备,还包括被配置成通过有线连接与所述主机设备通信有线组件。
12.如权利要求11所述的连接设备,其特征在于,所述有线连接包括有线USB连接、火线连接、以太网连接、串行连接或并行连接中至少一个。
13.如权利要求10所述的连接设备,其特征在于,所述设备属性包括关联类型标识符、连接设备标识符、连接密钥标识符、设备设置类GUID、所支持的频带组、或综合站URL中至少一个。
14.如权利要求10所述的连接设备,其特征在于,所述连接属性包括连接主机标识符、连接设备标识符、连接密钥标识符、优选频道、或主机区域中至少一个。
15.如权利要求10所述的连接设备,其特征在于,所述连接设备还被配置成安排所述WUSB组件并使用所述连接属性连接到所述主机设备。
16.一种在连接设备和主机设备之间通信的方法,所述连接设备和所述主机设备通过有线介质连接,所述方法包括:
通过所述有线介质,从所述连接设备向所述主机设备发送包括与所述连接设备的WUSB组件相关的设备属性的关联请求;
由所述主机设备确定与WUSB连接相关的连接属性;
通过所述有线介质,从所述主机设备向所述连接设备发送包括所述连接属性的响应;以及
由连接设备使用所述连接属性来建立与所述主机设备的连接。
17.如权利要求16所述的方法,其特征在于,所述设备属性包括关联类型标识符、连接设备标识符、连接密钥标识符、设备设置类GUID、所支持的频带组、或综合站URL中至少一个。
18.如权利要求16所述的方法,其特征在于,所述连接属性包括连接主机标识符、连接设备标识符、连接密钥标识符、优选频道、或主机区域中至少一个。
CNA2006800204178A 2005-06-10 2006-06-12 经由可信介质建立无线通用串行总线(wusb)连接 Pending CN101375260A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US68961005P 2005-06-10 2005-06-10
US60/689,610 2005-06-10
US11/246,510 2005-10-07

Publications (1)

Publication Number Publication Date
CN101375260A true CN101375260A (zh) 2009-02-25

Family

ID=40239702

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800204178A Pending CN101375260A (zh) 2005-06-10 2006-06-12 经由可信介质建立无线通用串行总线(wusb)连接

Country Status (2)

Country Link
JP (1) JP4856700B2 (zh)
CN (1) CN101375260A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102123324A (zh) * 2010-01-07 2011-07-13 Lg电子株式会社 与交互式网络相连接的数字广播接收机及其应用处理方法
CN103000018A (zh) * 2011-09-13 2013-03-27 索尼公司 电力供应装置、方法及程序
CN105474669A (zh) * 2013-08-21 2016-04-06 三星电子株式会社 对无线usb设备提供持久usb服务的方法和装置
CN105794220A (zh) * 2013-11-13 2016-07-20 Lg电子株式会社 管理通过网络连接的在广播接收设备和另一个设备之间的连接的方法和装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008004978A (ja) * 2006-06-20 2008-01-10 Nec Electronics Corp 無線通信システム、無線通信装置、及び無線通信装置間での暗号鍵の交換方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3045985B2 (ja) * 1997-08-07 2000-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 接続確立方法、通信方法、状態変化伝達方法、状態変化実行方法、無線装置、無線デバイス、及びコンピュータ
JP4125585B2 (ja) * 2002-11-18 2008-07-30 松下電器産業株式会社 無線通信システム,無線通信装置,無線通信方法,プログラム,および記録媒体

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102123324A (zh) * 2010-01-07 2011-07-13 Lg电子株式会社 与交互式网络相连接的数字广播接收机及其应用处理方法
CN102123324B (zh) * 2010-01-07 2014-04-09 Lg电子株式会社 与交互式网络相连接的数字广播接收机及其应用处理方法
US8769570B2 (en) 2010-01-07 2014-07-01 Lg Electronics Inc. Method of processing application in digital broadcast receiver connected with interactive network and the digital broadcast receiver
CN103000018A (zh) * 2011-09-13 2013-03-27 索尼公司 电力供应装置、方法及程序
CN105474669A (zh) * 2013-08-21 2016-04-06 三星电子株式会社 对无线usb设备提供持久usb服务的方法和装置
CN105474669B (zh) * 2013-08-21 2019-01-25 三星电子株式会社 对无线usb设备提供持久usb服务的方法和装置
US10404812B2 (en) 2013-08-21 2019-09-03 Samsung Electronics Co., Ltd Method and apparatus for providing a persistent USB service for wireless USB devices
CN105794220A (zh) * 2013-11-13 2016-07-20 Lg电子株式会社 管理通过网络连接的在广播接收设备和另一个设备之间的连接的方法和装置

Also Published As

Publication number Publication date
JP4856700B2 (ja) 2012-01-18
JP2008547250A (ja) 2008-12-25

Similar Documents

Publication Publication Date Title
US20060149858A1 (en) Establishing wireless universal serial bus (WUSB) connection via a trusted medium
KR101551315B1 (ko) 다른 디바이스가 무선 네트워크에 연결하는 것을 가능하게 하기 위한 모바일 디바이스의 사용
CN100486173C (zh) 使用便携式存储媒质配置瘦客户机设备的网络设置
US8245284B2 (en) Extensible network discovery
US8477943B2 (en) Automatic detection of wireless network type
EP2070345B1 (en) Wireless device registration, such as automatic registration of a wi-fi enabled device
US20040162105A1 (en) Enhanced general packet radio service (GPRS) mobility management
US8582471B2 (en) Wireless ad-hoc network configuration method and apparatus
US20160309330A1 (en) Method and apparatus for managing beacon device
US20160242033A1 (en) Communication service using method and electronic device supporting the same
KR20160023159A (ko) 근거리 무선 통신(nfc) 기능을 이용하여 무선 연결을 설정하는 방법 및 이를 수행하기 위한 화상형성장치
CN102869014A (zh) 终端和数据通信方法
JP2006042087A (ja) クライアント端末、アクセスポイント装置、及び無線接続システム
JP6970256B2 (ja) ネットワーク環境におけるピア電子デバイスによるリモート電子デバイスの構成
US20080119136A1 (en) Access point with bluetooth transducer
CN103516510A (zh) 用于无线通讯系统存取控制的方法及其相关无线通讯系统
CN104125567A (zh) 家庭基站接入网络侧的鉴权方法、装置及家庭基站
CN101375260A (zh) 经由可信介质建立无线通用串行总线(wusb)连接
US20090164644A1 (en) Wireless security configuration system and method
US10986677B2 (en) Method and apparatus for connecting to access point in WLAN network
EP1708415A1 (en) Method and apparatus for automatically setting the security parameters in WLANs
MXPA05013941A (es) Arquitectura extensible para una configuracion de dispositivo de medio no confiable a traves de un medio confiable.
KR20210015088A (ko) 단말과 액세스 포인트의 연결 방법
US20060251254A1 (en) Method and apparatus for auto setting security mechanism of WLAN
CN107548058B (zh) 设备接入方法和智能终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090225