CN104272694A - 用于提供针对重新导向的usb设备或本地设备的基于私有的连线阶段的存取的系统及方法 - Google Patents

用于提供针对重新导向的usb设备或本地设备的基于私有的连线阶段的存取的系统及方法 Download PDF

Info

Publication number
CN104272694A
CN104272694A CN201280064749.1A CN201280064749A CN104272694A CN 104272694 A CN104272694 A CN 104272694A CN 201280064749 A CN201280064749 A CN 201280064749A CN 104272694 A CN104272694 A CN 104272694A
Authority
CN
China
Prior art keywords
impel
server
equipment
link
namespace
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.)
Granted
Application number
CN201280064749.1A
Other languages
English (en)
Other versions
CN104272694B (zh
Inventor
P·考希克
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.)
Dell Marketing
Original Assignee
Wyse Technology LLC
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 Wyse Technology LLC filed Critical Wyse Technology LLC
Publication of CN104272694A publication Critical patent/CN104272694A/zh
Application granted granted Critical
Publication of CN104272694B publication Critical patent/CN104272694B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/105Multiple levels of security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

所描述的是限制从服务器存取设备的处理,其中该设备远离服务器,并且与远离服务器的客户机本地连接。该操作可以包括:促使在服务器上拦截用于创建符号链接的应用调用;促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象;促使获取用于指示是否限制针对该设备的存取的配置数据;以及一旦获取了用于指示限制存取针对该设备的配置数据,则促使在服务器的对象管理器命名空间的本地命名空间中创建该符号链接。

Description

用于提供针对重新导向的USB设备或本地设备的基于私有的连线阶段的存取的系统及方法
技术领域
本技术主题主要涉及远程计算,尤其涉及的是提供针对重新导向(redirected)的USB或本地设备的基于私有的连线阶段(private session)的存取。
背景技术
与计算机网络设计和实施、尤其是客户机/服务器应用开发相关的一种方法包括对客户机应用和客户机终端进行设计,以使大多数的重度使用的资源处于经由网络连接的远程计算机上,例如集中式服务器上。客户机终端通常具有最低限度的内存、磁盘存储器及处理器能力,但其设计是以与强大服务器相连的大多数用户都不需要附加处理能力为前提的。对于此类客户机终端而言,由于减少了资源,并且可以从服务器集中管理和更新客户机,因此可以将总体购置成本降至最低限度。正因如此,这些客户机终端非常适合能够处理大量终端的网络。如果在客户机终端附着了设备,那么,当终端连接到服务器时,所述客户机终端以及客户机终端的设备均可为服务器所用。
发明内容
在本公开的一个方面中,一种用于限制从服务器存取设备的方法可以包括:促使在服务器上拦截用于创建符号链接的应用调用,促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象;促使获取用于指示是否限制存取设备的配置数据;以及一旦获取了用于指示限制存取设备的配置数据,则促使在服务器的对象管理器命名空间中的本地命名空间创建符号链接。
在本公开的一个方面中,机器可读存储介质可以用指令编码,所述指令可以由一个或多个处理器运行,以便执行一个或多个操作。所述一个或多个操作可以包括:促使在服务器上拦截用于创建符号链接的应用调用,促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象;促使获取用于指示是否限制存取设备的配置数据;以及一旦获取了用于指示限制存取设备的配置数据,则促使在服务器的对象管理器命名空间中的本地命名空间创建符号链接。
在本公开的一个方面中,一种硬件设备可以包括一个或多个模块,这些模块被配置成执行一个或多个操作,包括:促使在服务器上拦截用于创建符号链接的应用调用,促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象;促使获取用于指示是否限制存取设备的配置数据;以及一旦获取了用于指示限制存取设备的配置数据,则促使在服务器的对象管理器命名空间中的本地命名空间创建符号链接。
在本公开的一个方面中,一种设备可以包括:用于促使在服务器上拦截用于创建符号链接的应用调用的装置,用于促使确定被拦截的用于创建符号链接的应用调用对应的是一个与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象的装置;用于促使获取用于指示是否限制存取设备的配置数据的装置;以及用于在获取了指示限制存取设备的配置数据的时候,促使在服务器对象管理器命名空间中的本地命名空间创建符号链接的装置。
应该理解的是,在本公开中,关于本技术主题的不同配置是作为例证而被显示和描述的,本领域技术人员很容易从中清楚了解关于本技术主题的不同配置。此外还应该认识到,本技术主题能够采用其他不同的配置,并且可以在其他不同方面修改其若干细节,所有这些配置和修改均未脱离本技术主题的范围。相应地,发明内容、附图及具体实施方式本质上应被视为说明性而不是限制性的。
附图说明
图1是计算机网络示例的概念框图。
图2是本地设备虚拟化系统的一个示例的概念框图。
图3A是用于在本地设备虚拟化系统中限制存取设备的系统的一个示例的概念框图。
图3B是提供针对虚拟化本地设备的受限存取的计算机网络的一个示例的概念框图。
图4A是用于存储对象管理器命名空间的数据结构的一个示例的概念框图。
图4B是用于存储虚拟总线驱动器的设备配置数据的数据结构的一个示例的概念框图。
图4C是关于系统服务描述表(system service description table,SSDT)的一个示例的概念框图。
图5A是示出了用于限制存取设备的例示方法的流程图。
图5B是示出了用于删除指向存取受限的设备的符号链接(symbolic link)的例示方法的流程图。
图6是示出了用于限制设备存取以及删除指向存取受限的设备的符号链接的例示方法的流程图。
图7是可以用作客户机或服务器的系统的一个示例的概念框图。
图8是本地设备虚拟化系统的服务器模块的示例的简化框图。
图9A是描述了根据本公开的一个方面来限制从服务器存取设备的方法的一个示例的框图;
图9B是描述了根据本公开的一个方面的用指令编码的机器可读存储介质的示例的框图,其中所述指令可以由处理器运行,以便执行一种用于限制从服务器存取设备的方法。
图9C是描述了根据本公开的一个方面的用于限制从服务器存取设备的设备示例的框图。
具体实施方式
以下阐述的具体实施方式旨在描述本技术主题的不同配置,而不是描述可以实施本技术主题的唯一配置。在这里引入的附图构成了具体实施方式的一部分。该具体实施方式包含了用于全面理解本技术主题的具体细节。然而,对本领域技术人员来说,本技术主题显然是可以在没有这些具体细节的情况下实施的。在一些情况中,为了避免与本技术主题的概念相混淆,众所周知的结构和组件是以框图形式显示的。为了便于理解,相同的组件是用相同的部件编号标记的。
在服务器上,与客户机终端(“客户机侧设备”)相连的设备往往会被虚拟化,以便提供从服务器上的用户连线阶段(user session)到这些设备的存取。然而,虚拟化设备(或重新导向设备)有可能被大量的用户连线阶段和/或客户机终端所存取。例如,在办公室环境中,多个用户连线阶段和/或客户机可以连接到将设备虚拟化(或重新导向)的服务器,并且与服务器相连的多个用户连线阶段和/或客户机全都可以存取该设备。由此,与用户的客户机终端相连的用户的虚拟化设备可能遭遇到由其他用户连线阶段实施和/或来自其他用户客户机的非预期或未经授权的存取和使用。由此,有必要具有允许限制存取虚拟化设备的系统和方法,以便可以提供从选定用户连线阶段到此类设备的安全私有的存取,同时阻止来自其他用户连线阶段的存取。
图1示出的是根据本公开的一个方面的系统100的简化图示。系统100可以包括借助网络106来与服务器104通信的一个或多个客户机终端102a、102b、102c(在这里将其通称为一个或多个客户机102)。在一个方面中,服务器104被配置成支持远程连线阶段(例如远程桌面连线阶段),在该连线阶段中,处于客户机102的用户可以从客户机102远程存取服务器104上的应用和数据。该连接可以用若干种公知技术中的任一技术来建立,例如远程桌面协议(RDP)以及独立计算架构(ICA)。
在一个方面中,客户机终端102可以代表计算机,移动电话(例如智能电话),膝上型计算机,纤薄型客户机终端,个人数字助理(PDA),便携计算终端,或是具有处理器的适当终端或设备。在一个方面中,服务器104可以代表计算机,膝上型计算机,计算终端,虚拟机(例如虚拟机),桌面连线阶段(例如Microsoft Terminal Server),已发布的应用(例如Microsoft Terminal Server),或是具有处理器的适当终端。
在一个方面中,客户机102可以通过向服务器104发送远程存取请求和证书(例如登录名和密码)来与服务器104发起远程连线阶段。如果服务器104接受来自客户机102的凭证,那么服务器104可以建立一个允许位于客户机102的用户存取服务器104上的应用和数据的远程连线阶段。在远程连线阶段期间,服务器104通过网络106将显示数据发送至客户机102,其中该显示数据可以包括在服务器104上运行的桌面和/或一个或多个应用的显示数据。作为示例,该桌面可以包括与可在服务器104上启动的不同应用相对应的图标。该显示数据允许客户机102在本地显示服务器104上运行的桌面和/或应用。
在远程连线阶段期间,客户机102可以通过网络106向服务器104发送用户指令(例如在客户机102上借助鼠标或键盘来输入)。与接收自位于服务器104本地的输入设备的用户指令相似,服务器104可以处理来自客户机102的用户指令。举例来说,如果用户指令包括鼠标移动,那么服务器104可以相应移动在服务器104上运行的桌面的指针。当桌面和/或应用的显示数据响应于用户指令而改变时,服务器104会向客户机102发送更新的显示数据。客户机102会在本地显示更新的显示数据,以使位于客户机102的用户可以查看服务器104上响应于用户指令的改变。同时,这些方面允许位于客户机102的用户在本地查看针对服务器104上远程运行的桌面和/或指令的输入指令。从客户机端的角度来看,服务器104上运行的桌面可以代表虚拟桌面环境。
图2A是根据本公开的一个方面的本地服务虚拟化系统200的框图。系统200可以包括通过网络106与服务器104通信的客户机102(如图1所示)。客户机102可以包括代理(proxy)210,存根驱动器(Stub Driver)220以及总线驱动器230。如图2A所示,客户机102可以连接到设备240。服务器104可以包括中介(agent)250以及虚拟总线驱动器260。
依照图示的配置,虽然设备240没有与服务器104建立本地或物理连接且远离服务器104,但是如下文中进一步论述的那样,在服务器104看来,设备240是本地连接到服务器104的。由此,服务器104会将设备240看作虚拟设备290。
作为例证而不是限制,设备240可以是机器可读存储介质(例如闪存设备),打印机,扫描仪,相机,传真机,电话,音频设备(例如耳机),视频设备(例如相机),周边设备,或是能与客户机102相连的其他适当设备。设备240可以是外部设备(也就是位于客户机102的外部)或内部设备(也就是处于客户机102的内部)。
在本公开的一个方面中,设备240是一个通用串行总线(USB)设备,该设备可以使用有线USB或无线USB连接来与客户机102本地连接,并且可以依照通用串行总线(USB)通信协议来与客户机102通信。在另一个方面中,设备240可以是除了USB设备之外的其他设备。
这里使用的系统“本地”设备或是与系统“本地”连接的设备既可以是通过使用一个或多个线路或连接器直接连接到系统(例如物理连接到系统)的设备,也可以是通过使用无线链路(例如Bluetooth)直连到系统的设备。例如,设备240是客户机102的本地设备。此外,在本公开的一个方面中,系统本地设备或是与系统本地连接的设备可以包括位于系统内部的设备(例如客户机102的内部设备)。
“远程”设备或“远离”系统的设备可以是不与系统直接连接的设备。例如,由于服务器104并非直接连接到客户机102或设备240,而是间接地通过包含了诸如别的服务器或因特网的网络106(如图1所示)连接到客户机102或设备240的,因此,服务器104远离客户机102以及设备240。
总线驱动器230可被配置成允许客户机102的操作系统及程序与设备240进行互动。在一个方面中,当设备240连接到客户机102(例如被插入客户机102的端口)时,总线驱动器230可以检测到设备240的存在,并且可以从设备240中读取与设备240相关的信息(“设备信息”)。该设备信息可以包括设备特有的特征、特性及其他信息。以USB设备为例,该设备信息可以包括设备描述符(例如产品ID、厂家ID和/或其他信息),配置描述符,接口描述符,端点描述符和/或字串描述符。总线驱动器230可以通过计算机总线或其他有线或无线通信接口来与设备240通信。
在一个方面中,在客户机102本地运行的程序(例如应用)可以存取设备240。例如,当客户机10不与服务器104相连时,可以在本地被存取。在这个方面中,客户机102的操作系统(例如Microsoft)可以使用设备信息来发现和加载适合设备240的设备驱动器(未显示)。该设备驱动器可以为程序提供与设备240对接的高级接口。
在一个方面中,服务器104可以像设备240在本地与服务器104相连那样来存取设备240。在通过服务器104上运行的用户连线阶段将客户机102连接到服务器104时,这时可以从服务器104存取设备240。例如,从服务器104上运行的桌面(即虚拟桌面环境)可以存取设备240。在这个方面,总线驱动器230可被配置成载入存储驱动器220,以此作为设备240的默认驱动器。存根驱动器220可被配置成将设备240的存在报告给代理210,以及向代理210提供设备信息(例如设备描述符)。
代理210可被配置成通过网络将设备240的存在及设备信息报告给服务器104的中介250。由此,存根驱动器220会经由代理210将设备240重新导向到服务器104。
中介250可被配置成从代理210接收关于设备240已与客户机102相连的报告及设备信息。中介250还可以被配置成将来自代理210的报告与客户机102和/或能将客户机102连接到服务器104的用户连线阶段的一个或多个标识符相关联,作为示例,该标识符可以是连线阶段编号或连线阶段本地单元标识符(Local Unit identifier,LUID)。中介250可以向虚拟总线驱动器260提供关于设备250的通知及设备信息。虚拟总线驱动器260(其可以是TCXUSB总线驱动器或其他任何总线驱动器)可被配置成创建以及在存储器中存储与设备240相对应的记录,其中该记录包含了从中介250接收的至少部分的设备信息及连线阶段标识符。虚拟总线驱动器260可被配置成向服务器104的操作系统170(或是操作系统170的内核)报告设备已经连接,以及将设备信息提供给操作系统。由此,即使设备240连接到客户机102,也允许服务器104的操作系统识别出设备240的存在。
服务器104的操作系统可以在服务器104上使用设备信息来发现和加载适合设备240的一个或多个设备驱动器。如图2A中图示的那样,每个驱动器都具有相关联的设备对象(一个或多个对象281a、281b、……、281n,在这里将其通称为一个或多个设备对象281)。设备对象281是真实设备240或虚拟化(或概念性)设备290的软件实施方式。不同的设备对象281被层叠在彼此之上,以便提供完整的功能。在一个示例中,诸如USB闪存之类的设备240可以具有相关联的设备对象,并且该设备对象包含了与该设备的USB驱动器、存储驱动器、卷管理器驱动器以及文件系统驱动器相对应的对象。与同一个设备240相对应的设备对象281构成了一个关于设备240的分层设备堆栈280。例如,USB总线驱动器为USB设备创建设备对象281a,从而声明插入了新设备。接下来,操作系统内核(例如Windows内核)的即插即用组件将会搜索并加载对于设备240而言最佳的驱动器,由此将会创建层叠在先前设备对象281a上的另一个设备对象281b。设备对象281的分层处理将会创建设备堆栈280。
设备对象281可被保存在与总线驱动器260关联的服务器104的存储器中。特别地,这些设备对象以及合成的设备堆栈280可被保存在服务器304的随机存取存储器中。不同设备240/290所具有的设备堆栈可以具有不同的设备对象以及不同的设备对象数量。该设备堆栈可以是有序的,以使低级设备对象(对应于低等级的设备驱动器)与高级设备对象(对应于高等级的设备驱动器)相比具有较低的编号。设备堆栈可以按照从高级对象到低级对象的方式而被向下遍历。举例来说,如果说明性设备堆栈280对应于USB闪存驱动器,那么可以按照从高级文件系统驱动设备对象到卷管理器驱动设备对象、存储器驱动设备对象、USB驱动设备对象以及最终到低级虚拟总线驱动设备对象的方式来向下遍历该有序设备堆栈。不同的设备堆栈280可以层叠在彼此之上,以便在设备内部提供设备240/290的功能,例如USB耳机或USB随身碟。作为示例,USB随身碟首先可以创建一个USB设备堆栈,并且可以在该堆栈上创建一个存储设备堆栈,其中每个设备堆栈都具有两个或更多设备对象。
一旦服务器104的操作系统载入了一个或多个设备对象281,那么每一个设备对象281都可以创建一个指向设备对象以及相关驱动器的符号链接(也被称为“设备接口”)。服务器104上运行的应用可以使用该符号链接来存取设备对象281以及设备240/290。该符号链接可以通过调用IOCreateSymbolicLink()之类的应用(function)来创建,其中该应用包含了作为符号链接名称以及设备对象281或相关设备240的名称的自变量(argument)。举例来说,在一个示例中,指向USB闪存驱动设备240的符号链接可以通过从用于设备240的设备对象281调用包含自变量“\\GLOBAL??\C:”(即符号链接的名称)以及“\Device\HarddiskVolume1”(即设备对象的名称)的应用IOCCreateSymbolicLink()来创建。
设备接口与符号链接相似,并且在这里可以交换使用这些术语。在基于Windows的操作系统中,设备接口可以是一个符号链接,并且Windows可以基于设备类型来选择其名称。创建或注册供设备接口使用的应用编程接口(API)与创建供符号链接使用的应用编程接口可以是相同的。
通过创建符号链接,可以在操作系统170的对象管理器命名空间(objectmanager namespace,OMN)(以下将会结合图4A来对其进行更详细的描述)中创建条目。所述OMN将会存储为操作系统170创建并供其使用的符号链接的信息,这其中包括关于设备240、虚拟化设备290以及在服务器104上运行的应用270的符号链接。
作为符号链接创建处理的结果,在服务器104的OMN中将会枚举指向设备240的符号链接。一旦将设备240的存在报告给服务器104的操作系统170,则可以从服务器104上运行的用户连线阶段(以及相关联的桌面)(即虚拟桌面环境)存取设备240。例如,在虚拟桌面环境中,设备240可以显现为一个图标和/或可以被服务器104上运行的应用所存取。
在一个方面中,在服务器104上运行的应用270可以通过向操作系统170发送一个包含了关于设备240的符号链接的事务请求来存取设备240。操作系统170可以查阅对象管理器命名空间,以便检索设备240自身或是与设备240关联的设备对象281的地址或其他标识符。通过使用检索到的地址或标识符,操作系统170可以直接、通过设备堆栈280的设备对象281和/或通过虚拟总线驱动器260来转发这个关于设备240的事务请求。虚拟总线驱动器260可以将该事务请求引导至中介250,中介250则通过网络106将该事务请求发送到代理210。代理210接收来自中介250的事务请求,并且会将接收到的事务请求引导至存根驱动器220。然后,存根驱动器220通过总线驱动器230将该事务请求引导至设备240。
总线驱动器230接收来自设备240的事务请求结果,并且将事务请求结果发送到存根驱动器220。存根驱动器220将事务请求结果引导至代理210,代理210则通过网络106将该事务请求发送到中介250。中介250将事务请求结果引导至虚拟总线驱动器260。然后,虚拟总线驱动器260直接或是通过设备堆栈280的设备对象281将事务请求结果引导至应用270。
由此,虚拟总线驱动器260可以从应用270接收关于设备240的事务请求,并且可以将事务请求结果回送到应用270(直接或者通过设备堆栈280的设备对象281)。正因如此,应用270可以采用其与本地连接到服务器104的设备的总线驱动器交互的相同方式来与虚拟总线驱动器260交互。虚拟总线驱动器260可以隐藏其向中介250发送事务请求并从中介250而不是本地连接到服务器104的设备接收事务请求结果的事实。结果,在应用270看来,与客户机102相连的设备240仿佛是本地连接到服务器104的物理设备240。
对象管理器命名空间(OMN)存储的是供操作系统170使用所创建的符号链接的信息,这其中包括关于设备以及在服务器104上运行的应用的符号链接。通常,对象管理器命名空间包含了用于存储关于应用和设备的符号链接信息的若干个不同命名空间。例如,对象管理器命名空间可以包括以下命名空间:用于存储被服务器104上运行的所有用户连线阶段所共享的设备和应用的符号链接信息的“全局”命名空间;不同的“本地”命名空间,其中每一个本地命名空间都与服务器104上运行的用户连线阶段相关联,并被用于存储(仅限于)相关用户连线阶段所使用的应用的信息;以及用于存储可被服务器104存取的设备及虚拟设备的符号链接信息的“设备”命名空间。
这里描述的符号链接可以分为两种:全局(global)或本地(local)。全局符号链接可供整个系统(也就是在服务器104上运行的所有用户连线阶段)使用,本地符号链接则只能被其创建所用于的连线阶段看到并存取。例如,“\\GLOBAL??\c:”可以是指向标识为“\Device\HarddiskVolume1”的符号链接。由于“c:”是全局命名空间目录中的符号链接,因此,包括通过相应用户连线阶段登录的所有用户在内的整个系统都可以存取此类符号链接。
在某些操作系统、例如Windows操作系统中,如果为设备240创建符号链接,那么将会导致在对象管理器命名空间中的全局命名空间创建条目。由于该符号链接是在全局命名空间中创建的,因此,从服务器104上运行的任何用户连线阶段都可以存取该符号链接。结果,从服务器104上运行的任何用户连线阶段和/或从在服务器104上具有活动的用户连线阶段的任何客户机终端都可以存取与该符号链接关联的设备240。
图2B图示了一个用于提供本地设备虚拟化处理的计算机网络100的框图。如先前结合图1所述,网络100包括通过网络106来与服务器104通信的客户机终端102a、102b和102c。每一个客户机终端都可以具有一个或多个相连的设备,例如与客户机终端102a相连的设备240a以及与客户机终端102b相连的设备240b。
如以上结合图2A所述,在服务器104上可以虚拟化每一个设备240a、240b,以便通过相应虚拟设备290a、290b来提供从服务器104上的用户连线阶段到所述设备的存取。例如,当设备240a与客户机终端102a相连时,在服务器104的操作系统180中可以载入设备240a的驱动器,在服务器104上可以将设备240a虚拟化成虚拟设备290a,并且可以在操作系统170的对象管理器命名空间中创建一个指向设备240a的符号链接。一旦创建了符号链接,则客户机终端102a的用户能够通过服务器104上的用户连线阶段来存取设备240a。同样,当设备240b与客户机终端102b相连时,在服务器104的操作系统180的对象管理器命名空间中可以创建一个指向设备240b的符号链接。一旦创建了该符号链接,则客户机终端102b的用户能够通过服务器104上的用户连线阶段来存取设备240b。
指向设备240a、240b的符号链接是在操作系统170的对象管理器命名空间中的全局命名中间创建的。结果,从服务器104上运行的任何用户连线阶段都可以存取和使用这些符号链接以及相关联的设备。举例来说,如图2B图示的那样,对在服务器104上具有用户连线阶段的客户机终端102a来说,其用户可以从该用户连线阶段存取设备240a以及虚拟设备240b‘。同样,对在服务器上具有用户连线阶段的客户机终端240b来说,其用户可以从所述用户连线阶段那里存取设备240b以及虚拟设备240a’。最后,对在服务器104上具有用户连线阶段的客户机终端102c来说,其用户可以从所述用户连线阶段那里存取虚拟设备240a’以及240b‘。
由此,结合图2A和2B描述的设备虚拟化处理提供了从服务器104上的任何用户连线阶段到与任一终端102本地连接的设备240的不受限存取。这样,终端服务器102上的重新导向设备会变成该服务器的本地设备,并且可以被连接到该服务器的所有用户连线阶段存取。例如,在被通过服务器上的连线阶段连接的用户重新导向时,打印机或大容量存储设备将会显现为本地设备,并且所有用户都可以读/写所述大容量存储设备以及使用所述打印机来进行打印。
虽然不受限存取能使客户机终端102的用户共享针对设备240的存取和使用,但是,设备虚拟化处理不允许用户限制针对设备240的存取。在这个方面,不受限制的设备虚拟化处理不允许安全和私有地存取设备240。这样一来,由于在服务器104上具有用户连线阶段的任何数量的非授权用户均可存取或使用设备240,设备虚拟化处理将会显现出与安全性和隐私性相关的顾虑。为了解决这些关于安全性和隐私性顾虑,设备虚拟化系统有可能要求只能在连线阶段中存取通过该连线阶段连接的设备。
为了能在本地设备虚拟化系统中限制存取某个设备,在图3A中描绘了一种增强的服务器系统。图3A是根据本公开的系统300的框图。系统300可以包括通过网络106与服务器304通信的客户机102(如图1所示)。客户机102包括代理210、存根驱动器220、总线驱动器230以及一个或多个可选设备(240),该客户机与结合图2A显示和描述的客户机102基本相似。服务器304包括中介250,虚拟总线驱动器260,包含设备对象281a、218b、……281n的设备堆栈280,操作系统170,应用270,以及一个或多个可选的虚拟化设备290,这些设备的功能实际类似于图2A中的服务器104的相应部件。此外,服务器304还包括处于设备堆栈280与操作系统170之间的通信路径中的设备存取限制模块(Device Access Restriction Module)DARM)180。
在将设备240的驱动器和设备对象载入服务器方面,服务器304的功能与服务器104(结合图2A描述)基本相似。然而,服务器104与304之间的功能相似性并未延续至符号链接创建过程。服务器304的DARM 180被配置成拦截用于在服务器304上创建符号链接的应用调用,并且阻止操作系统170为在虚拟总线驱动器260中虚拟化的设备240创建符号链接。由此,DARM 180可以限制所述重新导向设备智能从将所述重新导向设备重新导向的用户连线阶段(例如Microsoft windows终端服务器连线阶段)存取。DARM 180的运作与在客户机102和服务器304之间的通信中使用的具体的远程连线阶段协议(例如RDP、ICA或其他任何协议)无关。
当设备对象281发布针对符号链接创建应用的调用(例如对于应用IOCreateSymbolicLink()的调用)时,该调用将被拦截,并且将被重新导向到DARM 180,而不会调用操作系统170的符号链接创建模块。作为重新导向的结果,这时将不会执行通常由操作系统170的模块承担的符号链接创建处理。取而代之的是,DARM 180将会执行替换的符号创建处理。
一旦接收到被重新导向的符号链接创建应用调用,则DARM 180确定该符号链接创建调用是否对应于设备对象281。如果该调用不涉及设备对象,那么DARM 180可以将该调用转发到操作系统170的符号链接创建模块,并且操作系统的符号链接创建模块可以创建符号链接。例如,用于创建指向服务器304上运行的某个应用的符号链接的调用有可能是与设备对象无关的调用,此类调用可被转发到操作系统170的符号链接创建模块,以便如以上结合图2A描述的那样创建符号链接。
如果该调用涉及设备对象的符号链路创建,那么DARM 180可以通过遍历设备堆栈280来识别与目标设备的设备堆栈相关联的总线驱动器。服务器304可以包括多个总线驱动器,其示例包括USB总线驱动器、PCMCIA总线驱动器、COM总线驱动器等等中的一个或多个。服务器304还包含虚拟总线驱动器260。如果DARM 180确定目标设备的设备堆栈不与虚拟总线驱动器260相关联,那么DARM 180可以将该调用转发至操作系统170的符号链接创建模块,并且操作系统的符号链接创建模块可以创建符号链接。然而,如果DARM 180确定设备堆栈与虚拟总线驱动器260相关联,那么DARM180将会获取目标设备的设备配置数据,并且将会基于设备配置数据来创建用于目标设备的符号链接。举例来说,如果设备配置数据表明该设备应该是本地或受限的,那么可以在对象管理器命名空间中的一个或多个本地命名空间创建本地符号链接。然而,如果设备配置数据表明应该共享该设备,那么可以在对象管理器命名空间中创建全局符号链接。
因此,DARM 180能在对象管理器命名空间的全局或本地命名空间中有选择地创建关于设备240的符号链接。如果在全局命名空间中创建设备的符号链接,则可以从服务器304上运行的任何用户连线阶段存取该设备。然而,如果在本地命名空间中创建设备的符号链接,则只能从与相应本地命名空间关联的用户连线阶段存取该设备。这样做可以提供设备的隐私性和安全性。
在一个方面中,Microsoft的终端服务器技术和授权可以提供一种供终端用户通过使用相同用户账户或不同用户账户连接到相同服务器的方式。设备可被重新导向到一个连接众多用户的终端服务器。并且只能从将所述设备重新导向的终端连线阶段存取该设备。其他所有用户连线阶段能够通过使用一些工具看到该设备的存在,但却不能存取该设备。由此,DARM 180可以将设备存取局限于某一个在终端服务器上被重新导向的连线阶段,并且由此可以只允许将设备重新导向的终端服务器连线阶段来存取该设备。这种连线阶段级限制能使设备被在相同连线阶段中运行和/或通过使用支持windows的接口来从相同连线阶段连接到该设备的工具或进程所存取。然而,该设备不能被使用支持windows的接口且从其他用户连线阶段连接到该设备的工具或进程所存取。通过将针对设备的存取限制成只允许与该设备物理连接或是可供该设备连接的特定客户机/连线阶段存取该设备,DARM 180提供了针对该设备的基于私有的连线阶段的存取。此外,通过核实寻求通过符号链接存取设备的连线阶段的身份以及通过阻止从未经授权或是无关联的用户连线阶段对所述设备进行包括读取存取和写入存取在内的非授权存取,DARM180提供了针对设备的安全存取。
图3B显示的是提供针对虚拟化的本地设备的受限存取的计算机网络100的框图。如先前结合图2B所述,网络100包括通过网络106来与服务器通信的客户机终端102a、102b、102c。每一个客户机终可以与一个或多个设备相连,例如客户机终端102a与设备240a相连,客户机终端102b与设备240b相连。
在图3B中,服务器304被配置成提供针对虚拟化的本地设备的受限存取。正因如此,服务器304包括一个用于拦截在服务器304上创建符号链接的调用的设备存取限制模块(DARM)180。当设备240a连接到客户机102a时,在服务器304上将会创建相应的虚拟化设备290a。然而,DARM 180将会拦截用于创建指向设备240a的符号链接的应用调用。所述DARM 180确定符号链接创建调用是否对应于某个设备对象,通过遍历设备堆栈来确定该设备对象与虚拟总线驱动器260相关联,以及获取目标设备的设备配置数据。在图3B的示例中,与设备240a关联的设备配置数据表明该设备是本地设备或是受到限制的设备。由此,DARM 180会在服务器304的OMN中与客户机终端102a的用户连线阶段相关联的本地命名空间创建一个关于设备240a的符号链接。由于符号链接是在与客户机终端102a的用户连线阶段相关联的本地命名空间创建的,因此只能从客户机终端102a存取设备240a。
当设备240b连接到客户机终端102b时,在服务器304上将会创建相应的虚拟化设备290b。与如上所述的设备240a的情形一样,DARM 180将会拦截用于创建指向设备240b的符号链接的应用调用。然而,与设备240b关联的设备配置数据有可能表明该设备是全局设备。由此,设备240b的符号链接是在服务器304的全局命名空间创建的。由于该符号链接是在全局指令空间创建的,因此不但能从客户机终端102b上运行的用户连线阶段存取设备240b,而且还能从客户机终端102a和102c上的用户连线阶段存取作为虚拟设备240b’的设备240b。
图4A-4C分别显示的是根据本技术主题的不同方面来存储对象管理器命名空间401、虚拟总线驱动器451的设备配置数据以及系统服务描述表(SSDT)461的数据结构。
图4A图示了一个用于存储服务器304的对象管理器命名空间401的数据结构。该数据结构通常驻留并保存在服务器304的存储器中。例如,OMN401可以保存在服务器304的随机存取存储器中。对象管理器命名空间401存储的是关于设备、应用和/或在相关操作系统(例如操作系统170)或计算机(例如服务器304)上运行或者可以从该操作系统或计算机存取的其他组件或对象的记录。对象管理器命名空间401中包含的记录被组织在全局命名空间403、本地命名空间405以及设备命名空间407中的一个或多个命名空间中。全局命名空间403包含的是与被操作系统或计算机上的所有用户连线阶段所共享的对象相关的记录或条目411、413。这样一来,具有位于全局命名空间中的条目的设备、应用或其他对象可被任何用户或者可以从操作系统170或计算机(例如服务器304)上的任何用户连线阶段存取。本地命名空间405包括与特定于操作系统或计算机上的一个或多个用户连线阶段的对象相关的记录或条目417、418、419。这样一来,具有处于本地命名空间中的条目的设备、应用或其他对象只能被与之关联的一个或多个特定连线阶段存取。举例来说,在图4A的示例中,记录或条目417和419与第一用户连线阶段415相关联,而记录或条目418则与不同用户连线阶段416相关联。最后,设备命名空间407包含的是与在操作系统或计算机上运行或是可以从操作系统或计算机存取的所有设备对象相关的记录或条目421、423。这样一来,具有处于全局403或本地命名空间405中的条目的设备对象还具有处于设备命名空间407中的相应条目。
图4B图示的是用于存储虚拟总线驱动器、例如图2A和3A中的虚拟总线驱动器260的设备配置数据的数据结构451。数据结构451通常驻留并保存在与虚拟总线驱动器相关联的服务器103、304的存储器中。该数据结构451可以包括与连接到虚拟总线或驻留在虚拟总线上的每一个虚拟化设备相关的记录或条目453。每一个条目453存储的是与相应的虚拟化设备相关联的设备信息455。该设备信息可以包括设备的物理地址,与设备相关联的一个或多个连线阶段标识符(例如连线阶段LUID或连线阶段编号),设备描述符(例如产品ID、厂家ID和/或其他信息),配置描述符,接口描述符,端点描述符和/或字串描述符。此外,该设备信息还可以包括设备配置数据,例如用于确定是否应该限制设备的设备配置数据。
图4C图示的是系统服务描述表(SSDT)461的框图。SSDT461包括一个或多个条目463、465、467,并且每个条目都存储了特定应用调用与地址之间的关联。该地址可以是用于在服务器304之类的计算机存储器中存储与应用调用相关联的指令的位置的地址。例如,条目465可以与应用IOCreateSymbolicLink()相关联,并且可以将位置地址保存在用于存储执行相关应用的指令的存储器中。条目467可以与应用IODeleteSymbolicLink()相关联,并且可以将位置地址保存在用于存储执行相关应用的指令的存储器中。操作系统170通过使用SSDT461来将接收到的应用调用引导至存储器中的恰当位置。例如,当操作系统170接收到对于应用IOCreateSymbolicLink()的调用时,操作系统170可以通过检索条目465来识别与该应用关联的存储器位置。一旦检索到条目465标识的存储器位置,则操作系统170可以将该调用转发至检索到的存储器位置。在缺省情况下,条目465和467可以分别指示与操作系统170的符号链接创建模块以及操作系统170的符号链接删除模块关联的存储器位置。
图5A是示出了根据本技术主题的不同方面来限制存取设备的例示方法500的流程图。作为示例,方法500可以由服务器304上的一个或多个处理器来实施。
方法500始于操作501,其中在服务器304上将会钩住一个符号链接创建进程。在默认情况下,针对符号链接创建应用的应用调用(例如针对IOCreateSymbolicLink()的应用调用)通常会被定向到在服务器304上运行的操作系统170中的符号链接创建模块。然而,该挂钩(hooking)操作会将针对符号链接创建应用的应用调用重新导向到服务器304的设备存取限制模块(DARM)180(或被其拦截)。结果,一旦成功完成挂钩操作,则拦截针对IOCreateSymbolicLink()的应用调用,并且将其重新导向到DARM 180的符号链接创建模块。作为示例,在具有SSDT461之类的系统服务描述表的服务器中,挂钩操作可以包括修改SSDT中与符号链接创建应用相关联的条目,例如条目465。特别地,该挂钩操作可以包括将条目465中存储的地址从指向操作系统170的符号链接创建模块(或是指向存储器中用于存储执行操作系统170的符号链接创建模块的操作的指令的位置)的初始地址改成指向DARM 180中的符号链接创建模块(或是指向存储器中用于存储执行DARM180的符号链接创建模块的操作的指令的位置)的新地址。此外,该挂钩操作还可以包括在能被DARM 180存取的存储器中记录条目465中的初始地址,以使DARM 180能够发起针对操作系统170中的符号链接创建模块的应用调用。
一旦完成挂钩操作(操作501),那么,用于在服务器304中创建符号链接的所有应用调用都会被拦截,并且会被重新导向到DARM 180的符号链接创建模块。然后,操作503-513可以由DARM 180的不同模块来完成。在操作503中,一个或多个此类符号链接创建请求会被拦截并重新导向到DARM180。通常,符号链接创建应用调用可以包括诸如符号链接名称(例如“\\GLOBAL??\C:”)以及与符号链接关联的对象名称(例如“\Device\HarddiskVolume1”)之类的自变量。该对象名称可以是设备对象(例如设备对象281)或设备(例如设备240或290)的名称,或者该对象名称也可以是指别的类型的对象,例如区域对象、事件对象等等。作为拦截操作的一部分,作为初始符号链接创建应用调用的一部分而被包含的自变量将被提供给DARM 180。
响应于接收到被拦截的符号链接创建请求,在操作505中,DARM确定该请求是否对应于设备对象。DARM可以基于作为符号链接创建应用调用的一部分所包含且作为自变量的对象的名称(即“对象名称”)来确定该请求对应于设备对象。在一个示例中,DARM可以在OMN中搜索对象名称,一旦在OMN中定位了与该名称的匹配,则DARM将会确定OMN中的匹配条目是否对应于设备对象。所述DARM可以查阅服务器304的对象管理器命名空间401,在该命名空间中使用该对象名称来检索与该对象关联的条目,以及基于检索到的条目来确定相关联的对象是否为设备对象。例如,DARM通常可以确定与应用关联(和/或与OMN中的应用相关联)的请求并不对应于设备对象。同样,DARM可以确定与区域对象或事件对象关联的请求不对应于设备对象。如果DARM确定该请求对应于设备对象,则前进到操作507。然而,如果DARM确定该请求不对应于设备对象,那么DARM可以将符号链接创建请求转发至操作系统170的符号链接创建模块(例如通过将该请求转发到条目465中存储的初始地址),以便依照操作系统的正常处理来创建符号链接。
在操作507中,DARM 180遍历与用户设备对象相关联的设备堆栈,以便识别出构成该设备堆栈的总线驱动器。对设备堆栈的遍历可以包括识别创建该符号链接创建请求的驱动器,以及识别出与被识别的驱动器和/或该请求中标识的地址相关联的其他驱动器。
在一个方面中,设备堆栈遍历是从先前操作(操作505)中检索到的设备对象开始向下执行的。该遍历是通过检查设备堆栈是否结束于(或是包含)虚拟总线驱动器260的驱动器所创建的设备对象来完成的。通过从设备对象开始向下遍历,能使DARM 180检查出该设备对象是否对应于被虚拟总线驱动器260重新导向的设备。如果确定该设备是重新导向设备,那么DARM 180还获取对于可用在后续操作(例如在操作509)中的设备的标引。由于第一设备对象可以包括该设备的更多细节、信息和/或数据,因此可以使用堆栈遍历来识别重新导向设备的第一设备对象,也就是由虚拟总线创建或与虚拟总线驱动器关联的设备对象。
在操作509中,DARM 180获取该设备的设备配置数据。设备配置数据通常包括一个表明应该在服务器304上共享还是限制针对该设备的存取的指示。设备配置数据可以从虚拟总线驱动器260中获取。作为替换,设备配置数据还可以是从服务器104的存储器、用户输入的设备配置数据等等中获取的。例如,对于用户输入的配置数据来说,设备配置数据可以由连接到设备240的客户机终端102的用户响应于在设备240连接到客户机120时呈现给用户且要求用户提供设备配置数据的提示来输入。所获取的设备配置数据可以对应于以下各项:特定的设备对象(例如用于表明应该共享还是限制特定设备的设备配置数据),设备对象类型(例如用于表明是否应该共享所有存储设备、所有周边设备(例如相机、鼠标等等)和/或其他类型的设备对象的设备配置数据),特定用户(例如用于表明应该共享还是限制连接到与特定用户连线阶段相关联的客户机终端的设备的设备配置数据),特定类型的用户(例如用于表明不应该限制具有管理员存取权限的用户的用户连线阶段存取该设备的设备配置数据),默认配置数据(例如用于表明是应该共享还是限制不具有设备专用配置数据的所有设备的设备配置数据),或是其他的适当用户数据。
一旦获取了设备配置数据,则DARM 180可以基于所获取的配置数据来检查是否将设备存取局限于该用户的连线阶段。如果将设备存取局限于该用户的连线阶段,那么DARM 180前进到操作511。然而,如果没有限制设备存取(举例来说,如果配置数据表明授权服务器104上的所有用户连线阶段存取该设备),那么DARM 180可以将符号链接创建请求转发到操作系统170的符号链接创建模块(例如通过将该请求转发到条目465中存储的初始地址),以便依照操作系统的正常处理来创建不受限制的符号链接。设备配置数据可以是基于设备标引、设备的其他标识符、设备类型、与设备关联的用户连线阶段等等而被检索的。如果确定该设备被配置成是受限的,那么DARM 180可以检索包括可供设备用以进行连接的连线阶段本地单元标识符(LUID)或连线阶段的连线阶段编号在内的设备信息,以便限制针对该设备的存取,由此,只有与检索到的LUID或编号相关联的连线阶段才可以存取该设备。
在操作511,DARM 180创建一个位于与设备相关联的连线阶段的本地的符号链接。操作511是在设备配置数据表明应该限制存取所述设备的时候执行的,由此可以阻止创建不受限制(或全局)的符号链接,并且由此能够创建具有相同名称的连线阶段本地符号链接。
为了创建本地符号链接,DARM 180会在操作系统170的对象管理器命名空间401中的本地命名空间(例如本地命名空间405)创建一个关于该设备的符号链接。特别地,DARM 180会创建一个与关联于设备的特定连线阶段相关联的符号链接,举例来说,该连线阶段可以是可供设备连接到服务器104的用户连线阶段。作为示例,该特定连线阶段可以对应于在操作509中标识的连线阶段LUID或连线阶段编号。这样一来,DARM 180会通过改变被请求的符号链接中的目录部分来避免在全局命名空间(例如全局命名空间403)创建符号链接,由此会在本地命名空间的连线阶段本地目录而不是在全局目录中创建符号链接。
在创建了连线阶段本地符号链接之后,在操作513,设备240会作为连线阶段本地设备来执行操作。当操作系统170接收到要求使用符号链接存取设备240的请求时,操作系统170确定与该请求相关联的用户连线阶段(例如通过识别该用户连线阶段的LUID或连线阶段编号),并且检索所确定的连线阶段的本地命名空间。然后,操作系统1780确定该请求中标识的符号链接是否包含在所确定的连线阶段的本地命名空间中。如果在所确定的连线阶段的本地命名空间中发现该符号链接,则操作系统170可以通过将该请求转发到设备240来授权存取与该符号链接相关联的设备对象。如果没有在所确定的连线阶段的本地命名空间及全局命名空间中发现该符号链接,那么操作系统170将会返回一个表明系统中不存在该符号链接和/或相关联的设备的差错消息。
特别地,操作系统通常不会在其他连线阶段的本地命名空间搜索该符号链接。由此,在一个连线阶段的本地命名空间中创建的符号链接所针对的设备实际不会被其他所有连线阶段看到。来自除了该连线阶段之外的任何连线阶段的设备存取请求(或是设备符号链接)都会导致操作系统返回一个与该操作系统在系统中完全不存在该设备时返回的消息相同的差错消息(例如设备未找到差错消息)。
图5B是示出了根据本技术主题的不同方面来删除或移除指向存取受限的设备的符号链接的例示方法550的流程图。例如,方法550可以由服务器304上的一个或多个处理器实施。虽然方法550与方法500是分开描述的,但是这两种方法也可以集成在一起,以便在与执行方法500中的相应操作基本相同的时间执行方法550中的一个或多个操作。
方法550始于操作513,其中设备240作为连线阶段本地设备工作。操作513与结合方法500描述的操作514基本相似,由此可以参考以上结合方法500所提供的关于操作513的描述。
在操作551,在服务器304上钩住一个符号链接删除进程。该挂钩进程与以上结合操作501描述的挂钩进程基本相似,但是操作551中的挂钩处理是针对符号链接删除或移除应用(例如调用IODeleteSymbolicLink()应用)执行的。挂钩操作导致将针对符号链接删除应用的应用调用重新导向到服务器304的设备存取限制模块(DARM)180(或被其拦截)。结果,一旦成功完成挂钩操作,则拦截针对IODeleteSymbolicLink()的应用调用,并且将其重新导向到DARM 180的符号链接删除模块。例如,在具有SSDT461之类的系统服务描述表的服务器304中,挂钩操作可以包括修改SSDT中与符号链接删除应用相关联的条目,例如条目467。特别地,该挂钩操作可以包括将条目467中存储的地址从指向操作系统170的符号链接删除模块(或是指向存储器中用于存储执行操作系统170的符号链接删除模块的操作的指令的位置)的初始地址改成指向DARM 180中的符号链接删除模块(或是指向存储器中用于存储执行DARM 180的符号链接删除模块的操作的指令的位置)的新地址。此外,该挂钩操作还可以包括在能被DARM 180存取的存储器中记录条目467中的初始地址,以使DARM 180能够发起针对操作系统170中的符号链接删除模块的应用调用。
虽然在图5B中将操作551显示成是在操作513之后进行的,但是这些操作的顺序是可以修改的。例如,通过在与执行方法500中的操作501的时间基本相同的时间执行操作551,可以在操作513之前执行操作551。
操作553-557可以在完成了操作511和551之后的任何时间执行。例如,在方法550的流程图中,操作553可以在操作551之后执行。在操作553,一个或多个此类符号链接删除请求会被拦截并重新导向到DARM 180。通常,符号链接删除应用调用可以包括一个或多个自变量,例如符号链接的名称(如“\\GLOBAL??\C:”)。作为拦截操作的一部分,作为初始符号链接删除应用调用的一部分而被包含的一个或多个自变量将被提供给DARM 180。
在操作555,DARM 180确定被拦截的符号链接删除请求是否对应于DARM所创建的本地符号链接(例如作为操作511的一部分创建的符号链接)。DARM 180可以通过检查符号链接包含在对象管理器命名空间401中的全局命名空间(例如全局命名空间403)还是本地命名空间(例如本地命名空间405)来执行该判定。如果符号链接位于全局命名空间,则确定该符号链接是全局链接。相反,如果符号链接位于本地命名空间,则确定该符号链接是本地连接。如果确定符号链接是全局的,则DARM可以将符号链接删除请求转发到操作系统170的符号链接删除模块(例如通过将该请求转发到条目467中存储的初始地址),以便依照操作系统的正常处理来删除或移除符号链接。然而,如果确定符号链接是本地的,则DARM 180可以前进到操作557。
在操作557中,本地符号链接将被删除。特别地,DARM 180可以检查对象管理器命名空间401中的本地命名空间405,并且可以从本地命名空间中清除或移除符号链接的所有实例。所述DARM可以通过执行删除、移除和/或清除处理来确保从本地命名空间移除了所有实例。相比之下,操作系统170的符号链接删除模块只能从对象管理器命名空间中的全局命名空间删除符号链接,由此无法恰当移除本地符号链接。
方法500和550的处理规定由设备驱动器来创建符号链接和设备接口,以便将用户程序提供给设备。这些符号链接和设备接口通常会被保持在对象管理器命名空间中的全局目录(\GLOBAL??),以便提供从服务器上的任何用户连线阶段到设备的系统级存取。然而,DARM 180会检查创建符号链接和设备接口的处理,并且会基于设备配置数据来限制设备存取其为之被重新导向的连线阶段。特别地,DARM 180会挂钩供操作系统(例如Windows操作系统)中的设备驱动器用以创建符号链接和设备接口的系统链接创建和移除API及系统调用,以便将所述API和系统调用重新导向到DARM。在重新导向设备时,拦截或重新导向模块将会记录连线阶段编号和/或连线阶段LUID,其中所述连线阶段编号和/或连线阶段LUID规定了被重新导向的系统调用所源于的连线阶段。该连线阶段信息与虚拟总线驱动器中的剩余设备信息保存在一起。在为新的设备对象创建新的符号链接或设备接口时,DARM 180可以对其进行拦截,并且可以核实该驱动器创建的设备对象是不是直接或间接安装在虚拟总线上的设备对象。该核实是通过在到达与虚拟总线设备对象相对应的设备对象之前或者在到达根(底部)设备之前解析所有设备对象来完成的。如果在设备堆栈中到达虚拟总线创建的设备对象,那么DARM 180可以收集该设备的更多信息,并且可以检查用户是否选择不共享该设备,以及将存取局限于一个用户的连线阶段。如果识别出设备对象是存取受限的设备对象,那么DARM可以阻止创建驱动器请求的符号链接,取而代之的是,它可以为重新导向设备所源于的连线阶段创建本地符号链接。在移除符号链接或设备接口时,DARM 180将会执行类似操作,从而清除DARM在本地连线阶段目录中创建的符号链接和设备接口。由此,方法500和550的处理提供了用于提供针对诸如USB设备和本地设备之类的设备的安全基于私有的连线阶段的存取的系统和方法。
图6是示出了根据本技术主题的不同方面来限制存取设备以及删除指向存取受限的设备的符号链接的例示方法600的流程图。方法600显示的方法与以上结合图5A和5B中的方法500和550所描述的方法相似。
方法600始于操作601。在操作602中,DRAM钩住符号链接创建和移除(或删除)应用编程接口(API)以及系统调用。特别地,操作602可以包括钩住(或修改)符号链接创建和移除API以及系统调用,以便检查正被创建的所有的新符号链接或设备接口。该挂钩处理提供了一种不允许在未经检查的情况下创建任何符号链接或设备接口的周全的机制。在操作603,DARM拦截符号链接或设备接口创建请求,并且从该请求中获取目标名称。在挂钩操作结束之后,所有符号链接和设备接口创建请求首先都会去往DARM 180,然后则会基于设备而被重新导向。DARM可以从创建请求中取回所要创建的符号链接目录和名称以及正在创建的符号链接所指向(或是所用于)的目标名称。由此,DARM 180可以拦截以及阻止创建符号链接,直至识别出设备细节。此外,DARM 180还可以获取符号链接的目标名称,该名称可用于发现设备的更多细节。
DARM可以使用目标名称来确定与请求关联的对象(操作604),并且可以确定该对象是否为设备对象(操作605)。特别地,DARM 180可以从目标名称中识别该对象,并且可以核实该对象是否为设备对象。所述DARM180可以解析对象管理器命名空间401,并且可以在OMN中搜索该对象。在发现对象之后,DARM 180可以检查该对象是否为设备对象。DARM 180可以获取(或者检索或识别)正被创建的符号链接所对应的设备对象,这样做有助于搜索(或识别)为设备240创建的第一设备对象。如果识别出的对象不是设备对象,那么DARM 180不需要做任何事情,并且可以将符号链接创建操作的控制权交给初始应用,即操作系统的符号链接创建应用。如果该对象不是设备对象,那么符号链接创建请求将被传递给初始符号链接创建应用,例如操作系统实施的符号链接创建应用(操作606)。
然而,如果该对象是设备对象,那么DARM将会一次一步地向下遍历设备堆栈(操作607)。在每个步骤,DARM会在该堆栈中确定当前设备的驱动器是不是虚拟总线驱动器(操作608),例如TCX USB总线驱动器。如果当前设备的驱动器不是虚拟总线驱动器,那么DARM确定当前设备是不是设备堆栈中的最低等级的设备(即根设备)。如果到达堆栈中的最下方设备(操作609),那么DARM将会前进到操作606。然而,如果当前设备不是最下方设备,那么DARM前进到操作607,以便从堆栈中检索下一个更低级设备。在操作608,如果确定用于当前设备的驱动器是虚拟总线驱动器,则DARM从虚拟总线驱动器中检索该设备的配置数据(操作610),并且基于该配置数据来确定是否限制该设备(操作611)。如果要限制该设备,那么DARM将会阻止被请求的符号链接创建进程,并且改为创建一个连线阶段本地符号链接(操作612)。如果是不受限制的设备,那么DARM会将符号链接创建请求传递至初始符号链接创建应用(操作606),例如由操作系统实施的符号链接创建应用。如果创建了连线阶段本地符号链接(操作612),那么DARM进一步被配置成拦截关于本地符号链接的符号链接移除请求,并且会恰当地清除对象管理器命名空间的连线阶段本地目录(操作613)。一旦完成了操作606或613中的任一操作,则操作结束(操作615)。
作为替换或补充,这里描述的系统和方法还可用于提供针对本地设备的基于私有的连线阶段的存取。在一个方面中,设备240可以直接连接到服务器的总线驱动器,作为示例,该服务器可以是服务器304。在该示例中,设备240可以是与服务器的USB总线相连的USB设备,与服务器的PCMCIA总线相连的PCMCIA设备,与服务器的COM总线相连的COM设备,或是在本地与服务器相连的别的恰当类型的本地设备。在总线驱动器上可以为该设备创建设备堆栈,该设备堆栈包含了具有相关联的设备驱动器的设备对象。服务器上的DARM可以钩住符号链接创建进程,由此可以拦截符号链接创建请求,并将其重新导向到DARM。DARM可以确定该请求对应于设备对象,并且可以通过遍历设备堆栈来识别总线驱动器,以及获取该设备的设备配置数据。如果DARM被配置成为连接到具有本地设备的总线驱动器的设备创建符号链接,并且如果配置数据表明应该将针对该设备的存取局限于一个或多个连线阶段,那么DARM可以在服务器的对象管理器命名空间中的恰当本地命名空间为该设备创建一个或多个本地符号链接。一旦创建了本地符号链接,那么所述本地符号链接可以限制仅仅从与对象管理器命名空间中的符号链接关联的用户连线阶段来存取本地设备。在一个示例中,对本地连接至服务器的设备的存取可被限制,由此只能从服务器上的某些用户连线阶段(以及仅仅从通过这些用户连线阶段连接的某些客户机终端)存取该设备。
图7是示出了根据本技术主题的不同方面的系统700的一个示例的概念框图。作为示例,系统700可以是客户机102或服务器104/304。
系统700包括一个处理系统702。该处理系统702能够通过总线704或是其他结构或设备来与接收机706以及发射机709进行通信。应该理解的是,除了总线之外的其他通信装置同样可以与被公开的配置结合使用。处理系统702可以产生提供给发射机709以进行传递的音频、视频、多媒体和/或其他类型的数据。此外,在接收机706上可以接收音频、视频、多媒体和/或其他类型数据,并且可以由处理系统702来对其进行处理。
处理系统702可以包括用于运行指令的通用处理器或专用处理器,并且还可以包括用于存储软件程序的数据和/或指令的机器可读介质719,例如易失或非易失存储器。所述指令可以保存在机器可读存储介质710和/或719中,并且可以由处理系统702运行,以便控制和管理针对不同网络的接入,以及提供其他的通信和处理功能。此外,这些指令还可以包括能够由处理系统702为诸如显示器712和数字键盘714之类的不同用户接口设备运行的指令。以客户机102为例,显示器712可以用于在客户机102上本地显示虚拟桌面环境,并且数字键盘714可以用于接收用户输入的指令,且该指令可以通过网络106而被转发到服务器104/304。处理系统702可以包括输入端口722和输出端口724。每一个输入端口722和输出端口724可以包括一个或多个端口。所述输入端口722和输出端口724既可以是相同端口(例如双向端口),也可以是不同端口。
处理系统702可以用软件、硬件或软硬件组合来实施。作为示例,处理系统702可以用一个或多个处理器来实施。处理器可以是通用微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、状态机、门逻辑、分立的硬件元件和/或其他任何能够执行计算或其他信息操作的适当设备。
机器可读介质可以是一个或多个机器可读媒体。无论被称为软件、固件、中间件、微代码、硬件描述语言还是其他,软件都应被广义地解释成是指令、数据或其任何组合。指令可以包括代码(例如采用源代码格式、二进制码格式、可执行代码格式或其他任何适当的代码格式)。
机器可读媒体(例如719)可以包括集成在处理系统中的存储器,这与ASIC的情形是一样的。此外,机器可读介质(例如710)还可以包括位于处理系统外部的存储器,例如随机存取存储器(RAM)、闪存、只读存储器(ROM)、可编程只读存储器(PROM)、可擦写PROM(EPROM)、寄存器、硬盘、可移除磁盘、CD-ROM、DVD或其他任何适当的存储设备。此外,机器可读媒体可以包括对数据信号进行编码的传输线或载波。本领域技术人员将会认识到如何以最佳方式来实施针对处理系统702所描述的功能。根据本公开的一个方面,机器可读介质是用指令编码或是存储指令的计算机可读介质,并且是一个定义了能够实现指令功能的指令与系统剩余部分之间的结构和功能方面的相互关系的计算部件。作为示例,指令可以由客户机终端、服务器或是客户机终端或服务器的处理系统来执行。此外,作为示例,指令可以是包含代码的计算机程序。
网络接口716可以是与网络对接的任何类型的接口(例如因特网网络接口),并且可以驻留在图7所示的任何组件之间。以客户机102为例,网络接口716可以用于将用户指令和响应从设备240通过网络106发送到服务器104/304,以及通过网络106接收来自服务器104/304的显示数据(例如用于虚拟桌面的显示数据)和指令(例如字串描述符请求)。
设备接口718可以是对接到设备的任何类型的接口,并且可以驻留在图7所示的任何组件之间。作为示例,设备接口718可以是一个与插入系统700的端口的外部设备(例如USB)相对接的接口。以客户机102为例,总线驱动器230可以被配置成检测经由设备718连接至客户机102的设备240的存在性,并且经由设备接口718来从设备240中读取设备信息(例如设备描述符),以便识别设备240。
收发信机部件707可以代表一个或多个收发信机,并且每一个收发信机都可以包括接收机706和发射机709。处理系统702中实施的功能可以在接收机706的一部分、发射机709的一部分、机器可读介质710的一部分、显示器712的一部分、数字键盘714的一部分或是接口716的一部分中实施,反之亦然。
以客户机102为例,总线驱动器230可以由处理系统702、设备接口718、机器可读介质710或是其任何组合来实施,并且代理210可以由处理系统702、网络接口716、机器可读介质710或是其任何组合来实施。存根驱动器220可以由处理系统702、机器可读介质710或是其任何组合来实施。作为示例,机器可读介质710可以包括能够由处理系统702实施以实现总线驱动器230、存根驱动器220以及代理210的各种功能的软件程序。
以服务器103/104为例,虚拟总线驱动器260、设备堆栈280、DARM 180及应用可以由处理系统702、机器可读介质710或是其任何组合来实施,并且中介250可以由网络接口716、处理系统702、机器可读介质710或是其任何组合来实施。
图8是本地设备虚拟化系统中的服务器304的说明性模块的简化框图。服务器304可以包括以下各项中的一些或全部:设备存取限制模块(DARM)180,操作系统模块826以及硬件组件830。设备存取限制模块(DARM)180自身可以包括以下各项中的一些或全部:挂钩模块803,拦截模块805(也被称为重新导向模块),设备标识模块811,堆栈遍历模块813,设备配置模块815,本地链接创建模块817以及本地链接删除模块819。拦截模块805可以包括以下的一项或所有两项:链接创建模块807和链接移除模块809。操作系统模块826优选可以包括内核828。服务器304的模块和/或组件可以相互通信。在一些方面中,硬件组件830可以包括不同的接口设备,并且服务器304的模块进一步与不同的网络接口设备、收发信机以及网络进行通信。由此,这些模块可以借助网络连接来与网络106和/或一个或多个客户机102及设备240进行通信。
在一个优选实施例中,这些模块(例如803-828)是用软件在硬件中实施的(例如包含子例程或代码的机器可读介质)。在另一个实施例中,一些或所有模块可以在硬件(例如专用集成电路(ASIC))、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、状态机、门逻辑、分立的硬件组件或是其他任何适当的设备)和/或这二者的组合中实施。在本公开中进一步描述了根据本公开的不同方面的这些模块的附加特征和功能。
以上结合图5A、5B和6描述的不同功能可以由不同的模块803-828来实施。例如,挂钩模块803可以执行操作501、551和602中的一些或所有操作;拦截模块805可以执行操作503、553、603和615中的一些或所有操作;设备标识模块811可以执行操作505、555、604和605中的一些或所有操作;堆栈遍历模块813可以执行操作507和607-609中的一些或所有操作;设备配置模块815可以执行操作509和610-611中的一些或所有操作;本地链接创建模块817可以执行操作511和612中的一些或所有操作;以及本地链接删除模块819可以执行操作555-557以及613中的一些或所有操作。链接创建模块807可以执行操作503和603中的一些或所有操作,以及链接移除模块809可以执行操作553和613中的一些或所有操作。操作系统模块826可以执行操作606或是在这里被描述成是由操作系统170或是其模块执行的其他操作中的一些或所有操作。
关于用于向重新导向设备提供基于私有的连线阶段的存取方法/机器可 读存储介质/设备的例证,其中该设备本地连接到客户机,并且服务器远离客 户机和设备(作为条款来描述)
为了方便起见,关于本公开的方面的不同示例是作为带编号的条款(1,2,3,……)描述的。这些条款是作为示例提供的,其并不对本技术主题构成限制。以下提供的附图标记和参考数字仅仅是作为示例并被用于例证目的的,并且所述条款并不受这些标记的限制。
1、一种用于限制从服务器存取设备的方法(相关示例参见图9A中的900-A),该方法包括:
促使在服务器上拦截用于创建符号链接的应用调用(相关示例参见图9A中的902-A);
促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象(相关示例参见图9A中的904-A);
促使获取用于指示是否限制针对该设备的存取的配置数据(相关示例参见图9A中的906-A);以及
一旦获取了用于指示限制存取针对该设备的配置数据,则促使在服务器的对象管理器命名空间的本地命名空间中创建该符号链接(相关示例参见图9A的908-A)。
2、根据条款1的方法,其中该设备是USB设备。
3、根据条款1的方法,其中促使创建符号链接包括:促使在服务器上与客户机的用户连线阶段相关联的本地命名空间中创建该符号链接,所述客户机与该设备是本地连接的。
4、根据条款1的方法,其中促使拦截包括:
促使修改服务器的系统服务描述表(SSDT),以便将用于创建符号链接的应用调用重新导向到拦截模块;以及
促使将用于创建符号链接的应用调用重新导向到拦截模块。
5、根据条款1的方法,其中促使确定包括:
促使确定被拦截的用于创建符号链接的应用调用对应的是设备对象;
促使遍历与设备对象相关联的设备堆栈,以便识别与设备对象相关联的最低的总线驱动器;以及
促使基于总线驱动器的标识来确定该设备对象与远离服务器且本地连接至远离服务器的客户机的设备相关联。
6、根据条款1的方法,其中促使获取配置数据包括:
促使从服务器的存储设备中检索与设备相关联的配置数据。
7、根据条款1的方法,其中促使获取配置数据包括:
促使从本地连接至该设备的客户机的用户连线阶段中检索与设备对象相关联的配置数据。
8、根据条款1的方法,还包括:
促使使用在服务器的对象管理器命名空间的本地命名空间中创建的符号链接来向该设备提供安全的基于连线阶段的存取。
9、根据条款1的方法,其中促使创建符号链接包括:促使在与第一用户连线阶段相关联的本地命名空间中创建符号链接,该方法还包括:
促使在服务器上接收来自第二用户连线阶段的包含了所创建的符号链接的请求;
促使确定所创建的符号链接是处于与第二用户连线阶段相关联的本地命名空间还是全局命名空间;以及
一旦确定所创建的符号链接不在与第二用户连线阶段相关联的本地命名空间且不在全局命名空间,则促使阻止所接收的请求。
10、根据条款1的方法,还包括:
促使在服务器上拦截用于删除符号链接的应用调用;以及
促使从服务器的对象管理器命名空间中删除该符号链接。
11、根据条款10的方法,其中促使删除还包括:
促使确定用于删除符号链接的应用调用对应于服务器的对象管理器命名空间中的本地命名空间中的符号链接;以及
促使从服务器的对象管理器命名空间的本地命名空间中删除该符号链接。
关于机器可读介质条款的示例
12、一种用指令编码的机器可读存储介质(相关示例参见图9B的900-B),其中所述指令可以由一个或多个处理器运行,以便执行一个或多个操作,所述一个或多个操作包括:
促使在服务器上拦截用于创建符号链接的应用调用(相关示例参见图9B中的902-B);
促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象(相关示例参见图9B中的904-B);
促使获取用于指示是否限制针对该设备的存取的配置数据(相关示例参见图9B中的906-B);以及
一旦获取了用于指示限制存取针对该设备的配置数据,则促使在服务器的对象管理器命名空间的本地命名空间中创建该符号链接(相关示例参见图9B的908-B)。
13、根据条款12所述的机器可读存储介质,其中该设备是USB设备。
14、根据条款12所述的机器可读存储介质,其中促使创建符号链接包括:促使在服务器上与客户机的用户连线阶段相关联的本地命名空间中创建该符号链接,所述客户机与该设备是本地连接的。
15、根据条款12所述的机器可读存储介质,其中促使拦截包括:
促使修改服务器的系统服务描述表(SSDT),以便将用于创建符号链接的应用调用重新导向到拦截模块;以及
促使将用于创建符号链接的应用调用重新导向到拦截模块。
16、根据条款12所述的机器可读存储介质,其中促使确定包括:
促使确定被拦截的用于创建符号链接的应用调用对应的是设备对象;
促使遍历与设备对象相关联的设备堆栈,以便识别与设备对象相关联的最低的总线驱动器;以及
促使基于总线驱动器的标识来确定该设备对象与远离服务器且本地连接至远离服务器的客户机的设备相关联。
17、根据条款12所述的机器可读存储介质,其中促使获取配置数据包括:
促使从服务器的存储设备中检索与设备相关联的配置数据。
18、根据条款12所述的机器可读存储介质,其中促使获取配置数据包括:
促使从本地连接至该设备的客户机的用户连线阶段中检索与设备对象相关联的配置数据。
19、根据条款12所述的机器可读存储介质,其中所述一个或多个操作还包括:
促使使用在服务器的对象管理器命名空间的本地命名空间中创建的符号链接来向该设备提供安全的基于连线阶段的存取。
20、根据条款12所述的机器可读存储介质,其中促使创建符号链接包括:促使在与第一用户连线阶段相关联的本地命名空间中创建符号链接,以及其中所述一个或多个操作还包括:
促使在服务器上接收来自第二用户连线阶段的包含了所创建的符号链接的请求;
促使确定所创建的符号链接是处于与第二用户连线阶段相关联的本地命名空间还是全局命名空间;以及
一旦确定所创建的符号链接不在与第二用户连线阶段相关联的本地命名空间且不在全局命名空间,则促使阻止所接收的请求。
21、根据条款12所述的机器可读存储介质,其中所述一个或多个操作还包括:
促使在服务器上拦截用于删除符号链接的应用调用;以及
促使从服务器的对象管理器命名空间中删除该符号链接。
22、根据条款21所述的机器可读存储介质,其中促使删除包括:
促使确定用于删除符号链接的应用调用对应于服务器的对象管理器命名空间中的本地命名空间中的符号链接;以及
促使从服务器的对象管理器命名空间的本地命名空间中删除该符号链接。
关于设备条款的示例
23、一种硬件设备(相关示例参见图9C的900-C),包括:
被配置成执行一个或多个操作的一个或多个模块,所述一个或多个操作包括:
促使在服务器上拦截用于创建符号链接的应用调用(相关示例参见图9C中的902-C);
促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象(相关示例参见图9C中的904-C);
促使获取用于指示是否限制针对该设备的存取的配置数据(相关示例参见图9C中的906-C);以及
一旦获取了用于指示限制存取针对该设备的配置数据,则促使在服务器的对象管理器命名空间的本地命名空间中创建该符号链接(相关示例参见图9C的908-C)。
24、根据条款23所述的硬件设备,其中该设备是USB设备。
25、根据条款23所述的硬件设备,其中促使创建符号链接包括:促使在服务器上与客户机的用户连线阶段相关联的本地命名空间中创建该符号链接,所述客户机与该设备是本地连接的。
26、根据条款23所述的硬件设备,其中促使拦截包括:
促使修改服务器的系统服务描述表(SSDT),以便将用于创建符号链接的应用调用重新导向到拦截模块;以及
促使将用于创建符号链接的应用调用重新导向到拦截模块。
27、根据条款23所述的硬件设备,其中促使确定包括:
促使确定被拦截的用于创建符号链接的应用调用对应的是设备对象;
促使遍历与设备对象相关联的设备堆栈,以便识别与设备对象相关联的最低的总线驱动器;以及
促使基于总线驱动器的标识来确定该设备对象与远离服务器且本地连接至远离服务器的客户机的设备相关联。
28、根据条款23所述的硬件设备,其中促使获取配置数据包括:
促使从服务器的存储设备中检索与设备相关联的配置数据。
29、根据条款23所述的硬件设备,其中促使获取配置数据包括:
促使从本地连接至该设备的客户机的用户连线阶段中检索与设备对象相关联的配置数据。
30、根据条款23所述的硬件设备,其中所述一个或多个操作还包括:
促使使用在服务器的对象管理器命名空间的本地命名空间中创建的符号链接来向该设备提供安全的基于连线阶段的存取。
31、根据条款23所述的硬件设备,其中促使创建符号链接包括:促使在与第一用户连线阶段相关联的本地命名空间中创建符号链接,以及其中所述一个或多个操作还包括:
促使在服务器上接收来自第二用户连线阶段的包含了所创建的符号链接的请求;
促使确定所创建的符号链接是处于与第二用户连线阶段相关联的本地命名空间还是全局命名空间;以及
一旦确定所创建的符号链接不在与第二用户连线阶段相关联的本地命名空间且不在全局命名空间,则促使阻止所接收的请求。
32、根据条款23所述的硬件设备,其中所述一个或多个操作还包括:
促使在服务器上拦截用于删除符号链接的应用调用;以及
促使从服务器的对象管理器命名空间中删除该符号链接。
33、根据条款32所述的硬件设备,其中促使删除包括:
促使确定用于删除符号链接的应用调用对应于服务器的对象管理器命名空间中的本地命名空间中的符号链接;以及
促使从服务器的对象管理器命名空间的本地命名空间中删除该符号链接。
关于设备条款的示例
34、一种设备(相关示例参见图9C的900-C),包括:
用于促使在服务器上拦截用于创建符号链接的应用调用的装置(相关示例参见图9C中的902-C);
用于促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象的装置(相关示例参见图9C中的904-C);
用于促使获取用于指示是否限制针对该设备的存取的配置数据的装置(相关示例参见图9C中的906-C);以及
用于在获取了指示限制存取针对该设备的配置数据的时候,促使在服务器的对象管理器命名空间的本地命名空间中创建该符号链接的装置(相关示例参见图9C的908-C)。
35、根据条款34所述的设备,其中该设备是USB设备。
36、根据条款34所述的设备,其中用于促使创建符号链接的装置包括:用于促使在服务器上与客户机的用户连线阶段相关联的本地命名空间中创建该符号链接的装置,所述客户机与该设备是本地连接的。
37、根据条款34所述的设备,其中用于促使拦截的装置包括:
用于促使修改服务器的系统服务描述表(SSDT),以便将用于创建符号链接的应用调用重新导向到拦截模块的装置;以及
用于促使将用于创建符号链接的应用调用重新导向到拦截模块的装置。
38、根据条款34所述的设备,其中用于促使确定的装置包括:
用于促使确定被拦截的用于创建符号链接的应用调用对应的是设备对象的装置;
用于促使遍历与设备对象相关联的设备堆栈,以便识别与设备对象相关联的最低的总线驱动器的装置;以及
用于促使基于总线驱动器的标识来确定该设备对象与远离服务器且本地连接至远离服务器的客户机的设备相关联的装置。
39、根据条款34所述的设备,其中用于促使获取配置数据的装置包括:
用于促使从服务器的存储设备中检索与设备相关联的配置数据的装置。
40、根据条款34所述的硬件设备,其中用于促使获取配置数据的装置包括:
用于促使从本地连接至该设备的客户机的用户连线阶段中检索与设备对象相关联的配置数据的装置。
41、根据条款34所述的设备,还包括:
用于促使使用在服务器的对象管理器命名空间的本地命名空间中创建的符号链接来向该设备提供安全的基于连线阶段的存取的装置。
42、根据条款34所述的设备,其中用于促使创建符号链接的装置包括:用于促使在与第一用户连线阶段相关联的本地命名空间中创建符号链接的装置,该设备还包括:
用于促使在服务器上接收来自第二用户连线阶段的包含了所创建的符号链接的请求的装置;
用于促使确定所创建的符号链接是处于与第二用户连线阶段相关联的本地命名空间还是全局命名空间的装置;以及
用于在确定所创建的符号链接不在与第二用户连线阶段相关联的本地命名空间且不在全局命名空间时候,促使阻止所接收的请求的装置。
43、根据条款34所述的设备,还包括:
用于促使在服务器上拦截用于删除符号链接的应用调用的装置;以及
促使从服务器的对象管理器命名空间中删除该符号链接。
44、根据条款43所述的设备,其中用于促使删除的装置包括:
用于促使确定用于删除符号链接的应用调用对应于服务器的对象管理器命名空间中的本地命名空间中的符号链接的装置;以及
用于促使从服务器的对象管理器命名空间的本地命名空间中删除该符号链接的装置。
在一个方面中,这里的任一条款均可从属于任一独立条款或是任一从属条款。并且在一些方面中,任一条款(例如从属或独立条款)都能与其他任一条款(例如从属或独立条款)相结合。在一个方面中,权利要求可以包含条款、语句、短语或段落中述及的一些或所有文字(例如步骤,操作,装置或组件)。并且在一个方面中,权利要求可以包括在一个或多个条款、语句、短语或段落中述及的一些或所有文字。在一个方面中,每一个条款、语句、短语或段落中的一些文字是可以移除的。此外,在一个方面中,在条款、语句、短语或段落中还可以添加附加的文字或元素。在一个方面中,本技术主题也可以在不使用这里描述的一些组件、元素、功能或操作的情况下实施。此外,在一个方面中,本技术主题还可以用附加的组件、元素、功能或操作来实施。
在一个方面中,在这里描述或是要求的任何方法、指令、代码、装置、逻辑、组件、部件、模块等等(例如软件或硬件)都可以用图形(例如流程图,框图)表示,此类图形(无论是否明确显示)在这里作为参考而被显性引入,并且此类图形(如果没有显性显示)可以在未构成新事项的情况下被添加到本公开中。为了简明起见,一些(但是未必所有)条款/描述/权利要求是用图形显性表示的,但是任一条款/描述/权利要求都可以在附图中采用与显性显示的附图相类似的方式来表示。例如,在这里可以为方法的条款、语句或权利要求绘制一个流程图,由此,每一个操作或步骤都通过箭头与下一个操作或步骤相连。在另一个示例中,其中可以为具有“用于……的装置”的元素(例如用于执行某个行为的装置)的条款、语句或权利要求绘制框图,由此可以将每一个用于……的装置的元素表示成是用于该元素的模块(例如用于执行操作的模块)。
本领域技术人员将会了解,这里描述的不同项目、例如不同的说明性部件、模块、元素、组件、方法、操作、步骤和算法(例如客户机102、服务器104/304机器内部组件)均可作为电子硬件、计算机软件或是这二者的组合来实施。
为了例证硬件与软件的可互换性,在这里主要是依照功能来描述诸如不同的说明性部件、模块、要素、组件、方法、操作、步骤和算法之类的项目的。将此类功能作为硬件还是软件实施取决于具体的应用以及施加于整个系统的设计约束条件。技术人员可以采用不同方式来为每一个特定应用实施所描述的功能。在一个方面中,“装置”、部件、模块、要素、组件或处理器可以是用于执行一个或多个功能或操作的项目(例如部件、模块、要素、组件或处理器中的一个或多个)。在一个方面中,此类项目可以是设备、硬件或是其一部分。作为示例,在一个示例中,项目可以具有用于执行一个或多个功能或是一个或多个操作的一个或多个指令的形式的结构,其中所述一个或多个指令被编码或保存在机器可读介质、别的设备或是其一部分中,并且其中一个或多个指令可以是软件、一个或多个应用、一个或多个子例程或是其一部分。在一个示例中,项目可以作为被配置成执行一个或多个功能或是一个或多个操作的一个或多个电路来实施。电路可以包括一个或多个电路和/或逻辑。所述电路可以是模拟和/或数字的。此外,电路也可以是电子和/或光学的。另外,电路还可以包括晶体管。在一个示例中,一个或多个项目可以作为一个处理系统(例如数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等等)来实施。本领域技术人员可以认识到如何实施这些指令、电路和处理系统。
除非特别说明,否则,对于单数形式的部件的引用并不意味着“有且仅有一个”,而是意味着“一个或多个”。例如,一个客户机可以是指一个或多个客户机,一个服务器可以是指一个或多个服务器,一个操作可以是指一个或多个操作,以及一个信号、消息或通信可以是指一个或多个信号、消息或通信。
除非以其他方式具体说明,否则,术语“一些”指的是一个或多个。阳性代词(例如他的)包含了阴性和中性(例如她的和它的),反之亦然。在这里出现的标题和子标题只是为了方便而被使用的,其并未对本发明构成限制。
这里使用的单词“例示”指的是“充当示例或例证”。在这里被描述成“例示”的任何方面或设计都不必被理解成比优越或优先于其他方面或设计。在一个方面中,这里描述的各种替换配置和操作可被认为至少是等价的。
诸如“方面”之类的短语既不暗指此类方面为本技术主题所必需,也不暗指此类方面适用于本技术主题的所有配置。与某个方面关联的公开有可能适用于所有配置,或是适用于一个或多个配置。一个方面可以提供一个或多个示例。诸如方面之类的短语可以是指一个或多个方面,反之亦然。诸如“实施例”之类的短语既不暗指该实施例为本技术主题所必需,也不暗指该实施例适用于本技术主题的所有配置。与一个实施例关联的公开既有可能适用于所有实施例,也有可能适用于一个或多个实施例。一个实施例可以提供一个或多个示例。短语此类实施例可以是指一个或多个实施例,反之亦然。诸如“配置”之类的短语既不暗指该配置为本技术主题所必需,也不暗指该配置适用于本技术主题的所有配置。与一个配置关联的公开既有可能适用于所有配置,也有可能适用于一个或多个配置。一个配置可以提供一个或多个示例。短语“此类配置”可以是指一个或多个配置,反之亦然。
应该理解的是,在本公开的一个方面中,如果将操作或功能描述成由某个项目来执行(例如钩住,修改,拦截,重新导向,确定,遍历,获取,创建,操作,删除,移除,接收,提供,生成,转换,显示,通知,接受,选择,控制,传送,报告,发送或是其他任何操作或功能),那么此类操作或功能可以由该项目直接或间接执行。在一个方面中,在将模块描述成执行某个操作时,该模块可被理解成直接执行该操作。在同一个方面中,在将某个模块描述成执行某个操作时,该模块可被理解成间接执行该操作,例如通过促使、启用或是导致此类操作来执行。
在一个方面中,除非另外陈述,否则包括以下的权利要求在内的本说明书中阐述的所有量度、数值、等级、位置、幅度、大小及其他规范都是近似而并非精确的。在一个方面中,其旨在具有与相关联的功能以及所涉及的领域的惯例相符合的合理范围。
在一个方面,“耦合”等术语可以是指直接耦合。在另一个方面中,“耦合”等术语可以是指间接耦合。在不脱离本技术主题的范围的情况下,不同项目是可以按照不同方式排列的(例如按照不同的顺序排列或是以不同的方式划分)。在本公开的一个方面中,附加权利要求中述及的元素可以由一个或多个模块或子模块执行。例如,本地链接创建模块和本地链接删除模块可以合并成一个模块。挂钩模块和拦截模块可以合并成一个模块。设备标识模块和堆栈遍历模块可以合并成一个模块。在另一个示例中,这些模块可以分成数量更多的模块。
应该理解的是,所公开的步骤、操作或处理的具体顺序或层级是关于例示方法的例证。应该理解的是,步骤、操作或处理的具体顺序或层次是可以基于设计偏好而被重排的。其中的一些步骤、操作或处理是可以同时执行的此外,这其中的一些或所有步骤、操作或处理是可以在没有用户介入的情况下自动执行的。附带的方法权利以作为样本的顺序呈现了不同步骤、操作或处理的要素,但这并不意味着将其局限于所呈现的具体顺序或层级。
本公开是为使本领域技术人员能够实现这里描述的不同方面而被提供的。本公开提供了关于本技术主题的不同示例,并且本技术主题并不局限于这些示例。对本领域技术人员来说,针对这些方面的各种修改都是显而易见的,并且在这里定义的通用原理同样也适用于其他方面。
作为参考,在这里显性引入了本领域普通技术人员已知或者以后将会获悉的与本公开描述的不同方面的要素相关的所有结构和功能等价物,并且权利要求旨在包含这些等价物。此外,不管是否在权利要求中明确述及这里公开的内容,都应该将这些公开无偿贡献给公众。除非明确使用了短语“用于……的装置”来表述部件,或者在方法权利要求中使用了短语“用于……的步骤”来表述要素,否则不能根据35U.S.C.&112第6段的规定来解释权利要求中的元素。另外,从使用“包括”、“具有”等术语的意义上讲,与在权利要求中将术语“包含”用作过渡词时所做的解释相似,此类术语同样应该是包含性的。
在本公开中引入了标题、背景技术、发明内容、附图说明以及摘要,并且这些内容是作为本公开的说明性实施例而不是限制性描述提供的。所提交的这些内容应被理解成没有对权利要求的范围或意义进行限制。此外,在具体实施方式中可以看出,所述具体实施方式提供的是说明性示例,并且各种特征被归组在了不同的实施例中,以便简化本公开。本公开的方法不应被解释成是反映了要求保护的主题所需要的特征多于每个权利要求中明确陈述的特征的意图。相反,如后续权利要求所反映的那样,本发明的主题所依赖的特征少于所公开的单个配置或操作中的所有特征。由此,后续权利要求将被引入具体实施方式,并且其中每个权利要求都是作为单独要求保护的主题独立存在的。
这些权利要求并不局限于这里描述的方面,而是与符合文本权利要求的完整范围相一致,并且包含了所有的等同法定效应。然而,所有权利要求都不包含不满足35U.S.C.§101、102或103的需求的主题,并且不应以这种方式来解释权利要求。据此,如果无意中包含了此类主题,那么此类主题将被放弃。

Claims (44)

1.一种用于限制从服务器存取设备的方法,该方法包括:
促使在服务器上拦截用于创建符号链接的应用调用;
促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象;
促使获取用于指示是否限制针对该设备的存取的配置数据;以及
一旦获取了用于指示限制存取针对该设备的配置数据,则促使在服务器的对象管理器命名空间的本地命名空间中创建该符号链接。
2.根据权利要求1的方法,其中该设备是USB设备。
3.根据权利要求1的方法,其中促使创建符号链接包括:促使在服务器上与客户机的用户连线阶段相关联的本地命名空间中创建该符号链接,所述客户机与该设备是本地连接的。
4.根据权利要求1的方法,其中促使拦截包括:
促使修改服务器的系统服务描述表,以便将用于创建符号链接的应用调用重新导向到拦截模块;以及
促使将用于创建符号链接的应用调用重新导向到拦截模块。
5.根据权利要求1的方法,其中促使确定包括:
促使确定被拦截的用于创建符号链接的应用调用对应的是设备对象;
促使遍历与设备对象相关联的设备堆栈,以便识别与设备对象相关联的最低的总线驱动器;以及
促使基于总线驱动器的标识来确定该设备对象与远离服务器且本地连接至远离服务器的客户机的设备相关联。
6.根据权利要求1的方法,其中促使获取配置数据包括:
促使从服务器的存储设备中检索与设备相关联的配置数据。
7.根据权利要求1的方法,其中促使获取配置数据包括:
促使从本地连接至该设备的客户机的用户连线阶段中检索与设备对象相关联的配置数据。
8.根据权利要求1的方法,还包括:
促使使用在服务器的对象管理器命名空间的本地命名空间中创建的符号链接来向该设备提供安全的基于连线阶段的存取。
9.根据权利要求1的方法,其中促使创建符号链接包括:促使在与第一用户连线阶段相关联的本地命名空间中创建符号链接,该方法还包括:
促使在服务器上接收来自第二用户连线阶段的包含了所创建的符号链接的请求;
促使确定所创建的符号链接是处于与第二用户连线阶段相关联的本地命名空间还是全局命名空间;以及
一旦确定所创建的符号链接不在与第二用户连线阶段相关联的本地命名空间且不在全局命名空间,则促使阻止所接收的请求。
10.根据权利要求1的方法,还包括:
促使在服务器上拦截用于删除符号链接的应用调用;以及
促使从服务器的对象管理器命名空间中删除该符号链接。
11.根据权利要求10的方法,其中促使删除还包括:
促使确定用于删除符号链接的应用调用对应于服务器的对象管理器命名空间中的本地命名空间中的符号链接;以及
促使从服务器的对象管理器命名空间的本地命名空间中删除该符号链接。
12.一种用指令编码的机器可读存储介质,其中所述指令可以由一个或多个处理器运行,以便执行一个或多个操作,所述一个或多个操作包括:
促使在服务器上拦截用于创建符号链接的应用调用;
促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象;
促使获取用于指示是否限制针对该设备的存取的配置数据;以及
一旦获取了用于指示限制存取针对该设备的配置数据,则促使在服务器的对象管理器命名空间的本地命名空间中创建该符号链接。
13.根据权利要求12所述的机器可读存储介质,其中该设备是USB设备。
14.根据权利要求12所述的机器可读存储介质,其中促使创建符号链接包括:促使在服务器上与客户机的用户连线阶段相关联的本地命名空间中创建该符号链接,所述客户机与该设备是本地连接的。
15.根据权利要求12所述的机器可读存储介质,其中促使拦截包括:
促使修改服务器的系统服务描述表,以便将用于创建符号链接的应用调用重新导向到拦截模块;以及
促使将用于创建符号链接的应用调用重新导向到拦截模块。
16.根据权利要求12所述的机器可读存储介质,其中促使确定包括:
促使确定被拦截的用于创建符号链接的应用调用对应的是设备对象;
促使遍历与设备对象相关联的设备堆栈,以便识别与设备对象相关联的最低的总线驱动器;以及
促使基于总线驱动器的标识来确定该设备对象与远离服务器且本地连接至远离服务器的客户机的设备相关联。
17.根据权利要求12所述的机器可读存储介质,其中促使获取配置数据包括:
促使从服务器的存储设备中检索与设备相关联的配置数据。
18.根据权利要求12所述的机器可读存储介质,其中促使获取配置数据包括:
促使从本地连接至该设备的客户机的用户连线阶段中检索与设备对象相关联的配置数据。
19.根据权利要求12所述的机器可读存储介质,其中所述一个或多个操作还包括:
促使使用在服务器的对象管理器命名空间的本地命名空间中创建的符号链接来向该设备提供安全的基于连线阶段的存取。
20.根据权利要求12所述的机器可读存储介质,其中促使创建符号链接包括:促使在与第一用户连线阶段相关联的本地命名空间中创建符号链接,以及其中所述一个或多个操作还包括:
促使在服务器上接收来自第二用户连线阶段的包含了所创建的符号链接的请求;
促使确定所创建的符号链接是处于与第二用户连线阶段相关联的本地命名空间还是全局命名空间;以及
一旦确定所创建的符号链接不在与第二用户连线阶段相关联的本地命名空间且不在全局命名空间,则促使阻止所接收的请求。
21.根据权利要求12所述的机器可读存储介质,其中所述一个或多个操作还包括:
促使在服务器上拦截用于删除符号链接的应用调用;以及
促使从服务器的对象管理器命名空间中删除该符号链接。
22.根据权利要求21所述的机器可读存储介质,其中促使删除包括:
促使确定用于删除符号链接的应用调用对应于服务器的对象管理器命名空间中的本地命名空间中的符号链接;以及
促使从服务器的对象管理器命名空间的本地命名空间中删除该符号链接。
23.一种硬件设备,包括:
被配置成执行一个或多个操作的一个或多个模块,所述一个或多个操作包括:
促使在服务器上拦截用于创建符号链接的应用调用;
促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象;
促使获取用于指示是否限制针对该设备的存取的配置数据;以及
一旦获取了用于指示限制存取针对该设备的配置数据,则促使在服务器的对象管理器命名空间的本地命名空间中创建该符号链接。
24.根据权利要求23所述的硬件设备,其中该设备是USB设备。
25.根据权利要求23所述的硬件设备,其中促使创建符号链接包括:促使在服务器上与客户机的用户连线阶段相关联的本地命名空间中创建该符号链接,所述客户机与该设备是本地连接的。
26.根据权利要求23所述的硬件设备,其中促使拦截包括:
促使修改服务器的系统服务描述表,以便将用于创建符号链接的应用调用重新导向到拦截模块;以及
促使将用于创建符号链接的应用调用重新导向到拦截模块。
27.根据权利要求23所述的硬件设备,其中促使确定包括:
促使确定被拦截的用于创建符号链接的应用调用对应的是设备对象;
促使遍历与设备对象相关联的设备堆栈,以便识别与设备对象相关联的最低的总线驱动器;以及
促使基于总线驱动器的标识来确定该设备对象与远离服务器且本地连接至远离服务器的客户机的设备相关联。
28.根据权利要求23所述的硬件设备,其中促使获取配置数据包括:
促使从服务器的存储设备中检索与设备相关联的配置数据。
29.根据权利要求23所述的硬件设备,其中促使获取配置数据包括:
促使从本地连接至该设备的客户机的用户连线阶段中检索与设备对象相关联的配置数据。
30.根据权利要求23所述的硬件设备,其中所述一个或多个操作还包括:
促使使用在服务器的对象管理器命名空间的本地命名空间中创建的符号链接来向该设备提供安全的基于连线阶段的存取。
31.根据权利要求23所述的硬件设备,其中促使创建符号链接包括:促使在与第一用户连线阶段相关联的本地命名空间中创建符号链接,以及其中所述一个或多个操作还包括:
促使在服务器上接收来自第二用户连线阶段的包含了所创建的符号链接的请求;
促使确定所创建的符号链接是处于与第二用户连线阶段相关联的本地命名空间还是全局命名空间;以及
一旦确定所创建的符号链接不在与第二用户连线阶段相关联的本地命名空间且不在全局命名空间,则促使阻止所接收的请求。
32.根据权利要求23所述的硬件设备,其中所述一个或多个操作还包括:
促使在服务器上拦截用于删除符号链接的应用调用;以及
促使从服务器的对象管理器命名空间中删除该符号链接。
33.根据权利要求32所述的硬件设备,其中促使删除包括:
促使确定用于删除符号链接的应用调用对应于服务器的对象管理器命名空间中的本地命名空间中的符号链接;以及
促使从服务器的对象管理器命名空间的本地命名空间中删除该符号链接。
34.一种设备,包括:
用于促使在服务器上拦截用于创建符号链接的应用调用的装置;
用于促使确定被拦截的用于创建符号链接的应用调用对应的是与远离服务器且本地连接至远离服务器的客户机的设备相关联的设备对象的装置;
用于促使获取用于指示是否限制针对该设备的存取的配置数据的装置;以及
用于在获取了指示限制存取针对该设备的配置数据的时候,促使在服务器的对象管理器命名空间的本地命名空间中创建该符号链接的装置。
35.根据权利要求34所述的设备,其中该设备是USB设备。
36.根据权利要求34所述的设备,其中用于促使创建符号链接的装置包括:用于促使在服务器上与客户机的用户连线阶段相关联的本地命名空间中创建该符号链接的装置,所述客户机与该设备是本地连接的。
37.根据权利要求34所述的设备,其中用于促使拦截的装置包括:
用于促使修改服务器的系统服务描述表,以便将用于创建符号链接的应用调用重新导向到拦截模块的装置;以及
用于促使将用于创建符号链接的应用调用重新导向到拦截模块的装置。
38.根据权利要求34所述的设备,其中用于促使确定的装置包括:
用于促使确定被拦截的用于创建符号链接的应用调用对应的是设备对象的装置;
用于促使遍历与设备对象相关联的设备堆栈,以便识别与设备对象相关联的最低的总线驱动器的装置;以及
用于促使基于总线驱动器的标识来确定该设备对象与远离服务器且本地连接至远离服务器的客户机的设备相关联的装置。
39.根据权利要求34所述的设备,其中用于促使获取配置数据的装置包括:
用于促使从服务器的存储设备中检索与设备相关联的配置数据的装置。
40.根据权利要求34所述的硬件设备,其中用于促使获取配置数据的装置包括:
用于促使从本地连接至该设备的客户机的用户连线阶段中检索与设备对象相关联的配置数据的装置。
41.根据权利要求34所述的设备,还包括:
用于促使使用在服务器的对象管理器命名空间的本地命名空间中创建的符号链接来向该设备提供安全的基于连线阶段的存取的装置。
42.根据权利要求34所述的设备,其中用于促使创建符号链接的装置包括:用于促使在与第一用户连线阶段相关联的本地命名空间中创建符号链接的装置,该设备还包括:
用于促使在服务器上接收来自第二用户连线阶段的包含了所创建的符号链接的请求的装置;
用于促使确定所创建的符号链接是处于与第二用户连线阶段相关联的本地命名空间还是全局命名空间的装置;以及
用于在确定所创建的符号链接不在与第二用户连线阶段相关联的本地命名空间且不在全局命名空间时候,促使阻止所接收的请求的装置。
43.根据权利要求34所述的设备,还包括:
用于促使在服务器上拦截用于删除符号链接的应用调用的装置;以及
促使从服务器的对象管理器命名空间中删除该符号链接。
44.根据权利要求43所述的设备,其中用于促使删除的装置包括:
用于促使确定用于删除符号链接的应用调用对应于服务器的对象管理器命名空间中的本地命名空间中的符号链接的装置;以及
用于促使从服务器的对象管理器命名空间的本地命名空间中删除该符号链接的装置。
CN201280064749.1A 2011-11-02 2012-11-01 用于提供针对重新导向的usb设备或本地设备的基于私有的连线阶段的存取的系统及方法 Active CN104272694B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/287,982 US8555409B2 (en) 2011-11-02 2011-11-02 System and method for providing private session-based access to a redirected USB device or local device
US13/287,982 2011-11-02
PCT/US2012/062984 WO2013067132A1 (en) 2011-11-02 2012-11-01 System and method for providing private session-based access to a redirected usb device or local device

Publications (2)

Publication Number Publication Date
CN104272694A true CN104272694A (zh) 2015-01-07
CN104272694B CN104272694B (zh) 2017-11-10

Family

ID=47190175

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280064749.1A Active CN104272694B (zh) 2011-11-02 2012-11-01 用于提供针对重新导向的usb设备或本地设备的基于私有的连线阶段的存取的系统及方法

Country Status (5)

Country Link
US (3) US8555409B2 (zh)
EP (1) EP2774343B1 (zh)
CN (1) CN104272694B (zh)
IN (1) IN2014CN03702A (zh)
WO (1) WO2013067132A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108173948A (zh) * 2017-12-29 2018-06-15 中国船舶重工集团公司第七〇九研究所 一种分布式试验数据实时交换方法

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003458B2 (en) 2011-12-21 2018-06-19 Ssh Communications Security Corp. User key management for the secure shell (SSH)
US9515999B2 (en) 2011-12-21 2016-12-06 Ssh Communications Security Oyj Automated access, key, certificate, and credential management
US9256393B2 (en) * 2011-12-21 2016-02-09 Seiko Epson Corporation Method for remote desktop control by remote host input devices
US8788950B2 (en) * 2012-02-15 2014-07-22 Seiko Epson Corporation Method for providing multiple mouse inputs in a remote desktop session
US20140095578A1 (en) * 2012-09-28 2014-04-03 Venkatesh Rajendran Systems and methods for capability sharing over a communicative link
EP2989768B1 (en) * 2013-04-25 2019-07-17 Koninklijke Philips N.V. Wireless docking device.
US10681023B2 (en) * 2013-06-28 2020-06-09 Ssh Communications Security Oyj Self-service portal for provisioning passwordless access
EP2824888B1 (en) 2013-07-08 2020-04-01 SSH Communications Security Oyj Trust relationships in a computerized system
US10347286B2 (en) 2013-07-25 2019-07-09 Ssh Communications Security Oyj Displaying session audit logs
US9819570B2 (en) * 2013-10-09 2017-11-14 International Business Machines Corporation Dynamic symbolic links for referencing in a file system
CN105955142B (zh) * 2014-07-25 2018-05-29 山东中鸿云计算技术有限公司 一种速度高的云终端用usb集线模块
US9467458B2 (en) 2014-08-01 2016-10-11 Dell Products L.P. System and method for providing selective access to a redirected device
US9639496B2 (en) * 2014-10-30 2017-05-02 Dell Products L.P. Systems and methods for providing protocol independent disjoint drive letter sets
US9971726B2 (en) * 2014-10-30 2018-05-15 Dell Products L.P. Session-level-restriction for universal serial bus storage devices
JP2016139273A (ja) * 2015-01-27 2016-08-04 富士通株式会社 連携システム、連携プログラムおよび連携方法
US9722987B2 (en) 2015-03-13 2017-08-01 Ssh Communications Security Oyj Access relationships in a computer system
WO2016176434A1 (en) 2015-04-28 2016-11-03 Duke Manufacturing Co. System and apparatus for connecting kitchen components
US9992236B2 (en) * 2015-06-22 2018-06-05 Dell Products L.P. Systems and methods for providing protocol independent disjoint port names
US9813504B2 (en) * 2015-08-03 2017-11-07 Citrix Systems, Inc. Virtualizing device management services on a multi-session platform
US10097534B2 (en) * 2015-08-28 2018-10-09 Dell Products L.P. System and method to redirect hardware secure USB storage devices in high latency VDI environments
US10146499B2 (en) * 2015-10-09 2018-12-04 Dell Products L.P. System and method to redirect display-port audio playback devices in a remote desktop protocol session
US9807177B2 (en) * 2015-10-16 2017-10-31 Dell Products L.P. Session aware USB redirection for multi-server published applications
US10067891B2 (en) * 2015-10-16 2018-09-04 Dell Products L.P. System and method for USB redirection for conferencing in an enterprise
CN107203408B (zh) * 2016-03-17 2021-02-23 华为技术有限公司 重定向的方法、装置和系统
JP6693210B2 (ja) 2016-03-24 2020-05-13 日本電気株式会社 通信処理システム、通信処理方法、通信処理装置、通信管理装置およびそれらの制御方法と制御プログラム
US10313448B2 (en) * 2016-04-25 2019-06-04 Wyse Technology L.L.C. Employing an auxiliary device to implement USB device redirection
US10216939B2 (en) * 2016-04-29 2019-02-26 Wyse Technology L.L.C. Implementing a security solution using a layering system
US10142425B2 (en) * 2016-05-23 2018-11-27 Wyse Technology L.L.C. Session reliability for a redirected USB device
US10375056B2 (en) * 2016-10-12 2019-08-06 Quest Software Inc. Providing a secure communication channel during active directory disaster recovery
US10862757B2 (en) * 2018-08-07 2020-12-08 Dell Products L.P. Isolating a redirected biometric device to a remote session
CN110086882A (zh) * 2019-05-08 2019-08-02 深圳市儒文科技有限公司 一种可无线自动更新存储内容的系统及方法
US11429395B2 (en) * 2020-01-02 2022-08-30 Jpmorgan Chase Bank, N.A. Peripheral device support in thin client environments
CN112399253A (zh) * 2020-11-30 2021-02-23 武汉噢易云计算股份有限公司 降低usb bulk图像设备重定向流量的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060075105A1 (en) * 2004-09-30 2006-04-06 Gueorgui Momtchilov System and method for data synchronization over a network using a presentation level protocol
US20070233869A1 (en) * 2006-03-31 2007-10-04 Microsoft Corporation Restricting device access per session
CN100544362C (zh) * 2005-06-09 2009-09-23 株式会社日立制作所 设备管理系统
CN100543707C (zh) * 2005-01-14 2009-09-23 微软公司 应用程序服务器环境中的usb设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US20050209842A1 (en) * 2004-03-16 2005-09-22 Digi International Inc. Remote USB port system and method
US7712110B2 (en) * 2004-09-28 2010-05-04 Citrix Systems, Inc. System and method for remoting twain function calls from a user session to a client system
US7558724B2 (en) * 2005-04-19 2009-07-07 Hewlett-Packard Development Company, L.P. Operation region describing a virtual device
US20060245403A1 (en) * 2005-04-27 2006-11-02 Matsushita Electric Industrial Co., Ltd. UPnP mobility extension using session initiation protocol
US8918530B2 (en) * 2005-09-09 2014-12-23 Microsoft Corporation Plug and play device redirection for remote systems
US7996841B2 (en) * 2005-12-12 2011-08-09 Microsoft Corporation Building alternative views of name spaces
US20080147909A1 (en) * 2006-12-18 2008-06-19 Winters Zhang Remote USB protocol for a heterogeneous system
US7752360B2 (en) * 2007-05-16 2010-07-06 Nuova Systems, Inc. Method and system to map virtual PCIe I/O devices and resources to a standard I/O bus
US8789070B2 (en) 2007-12-06 2014-07-22 Wyse Technology L.L.C. Local device virtualization
US8010630B2 (en) 2007-12-06 2011-08-30 Wyse Technology Inc. Local device redirection
WO2009151459A1 (en) * 2008-06-13 2009-12-17 Hewlett-Packard Development Company, L.P. Hierarchical policy management
JP5743174B2 (ja) * 2009-03-18 2015-07-01 日本電気株式会社 シンクライアントサーバシステム及びusbデバイスのドライバの管理方法
US8381284B2 (en) * 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US8204860B1 (en) * 2010-02-09 2012-06-19 F5 Networks, Inc. Methods and systems for snapshot reconstitution
WO2011143068A2 (en) * 2010-05-09 2011-11-17 Citrix Systems, Inc. Systems and methods for creation and delivery of encrypted virtual disks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060075105A1 (en) * 2004-09-30 2006-04-06 Gueorgui Momtchilov System and method for data synchronization over a network using a presentation level protocol
CN100543707C (zh) * 2005-01-14 2009-09-23 微软公司 应用程序服务器环境中的usb设备
CN100544362C (zh) * 2005-06-09 2009-09-23 株式会社日立制作所 设备管理系统
US20070233869A1 (en) * 2006-03-31 2007-10-04 Microsoft Corporation Restricting device access per session

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108173948A (zh) * 2017-12-29 2018-06-15 中国船舶重工集团公司第七〇九研究所 一种分布式试验数据实时交换方法
CN108173948B (zh) * 2017-12-29 2020-12-04 中国船舶重工集团公司第七一九研究所 一种分布式试验数据实时交换方法

Also Published As

Publication number Publication date
CN104272694B (zh) 2017-11-10
EP2774343A1 (en) 2014-09-10
US20130111561A1 (en) 2013-05-02
US20150244766A1 (en) 2015-08-27
US20140040470A1 (en) 2014-02-06
US9319452B2 (en) 2016-04-19
WO2013067132A1 (en) 2013-05-10
IN2014CN03702A (zh) 2015-10-09
US8555409B2 (en) 2013-10-08
EP2774343B1 (en) 2019-03-06
US9059893B2 (en) 2015-06-16

Similar Documents

Publication Publication Date Title
CN104272694A (zh) 用于提供针对重新导向的usb设备或本地设备的基于私有的连线阶段的存取的系统及方法
US10091203B2 (en) Specialized network fileserver
US9712511B2 (en) Mobile cloud service architecture
US7478085B2 (en) Ability for developers to easily find or extend well known locations on a system
KR102117727B1 (ko) 비즈니스 데이터 시스템에서 테넌트들에 대한 보안 및 데이터 격리 기법
CN102393844B (zh) 应用注册和统一媒体搜索
US20100234009A1 (en) Centrally managing user-specified configuration data for a configurable device
US9467458B2 (en) System and method for providing selective access to a redirected device
US7979868B2 (en) Method and apparatus for intercommunications amongst device drivers
US10235505B2 (en) Enabling enforcement of licensing terms in distributing content in containers by including a key in the container containing the pertinent licensing terms
US20160316002A1 (en) Access to supplemental data based on identifier derived from corresponding primary application data
US10235147B2 (en) Discovery and activation of application extensions
US11080284B2 (en) Hybrid search connector
KR20200044167A (ko) 메신저 봇을 이용하여 IoT 기기를 제어하기 위한 방법, 시스템, 및 비-일시적인 컴퓨터 판독가능한 기록 매체
EP2867800A1 (en) Method and apparatus for providing task-based service recommendations
US20150381671A1 (en) Virtual file sharing method
KR100520428B1 (ko) 사용자 인증에 따라 다양한 종류의 키워드를 연동하여관리하는 방법 및 그 시스템
KR100733742B1 (ko) 휴대용 정보처리 단말기 및 상기 단말기의 통신 시스템
US8532136B1 (en) Communication with a handset via a private network
US9536105B2 (en) Method and apparatus for providing data access via multi-user views
CN103984884A (zh) 软件许可方法和系统
Späth et al. Content Providers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220524

Address after: Texas, USA

Patentee after: DELL marketing

Address before: California, USA

Patentee before: WYSE TECHNOLOGY Inc.

TR01 Transfer of patent right